C#의 Web-Camera에서 H.264로 비디오를 인코딩하는 방법은 무엇입니까? [닫은
문제
C#의 웹캠에서 H.264로 비디오를 어떻게 인코딩합니까?
내가 무엇이 필요 하나
- 이에 대한 도움이있는 경우 MSDN.
- 인코딩/디코딩을위한 오픈 소스 리브/포장지.
- 수행 방법에 대한 튜토리얼 및 블로그 기사.
3GP 또는 FLV로 인코딩하는 방법의 일부 예 또는 파일 크기가 낮은 다른 것의 예는 감사하는 것 이상입니다.
해결책
DirectShow SDK를 조사해야합니다.
H.264로 인코딩하는 것은 직접 불가능하지만 도움이되는 상업용 ActiveX 컨트롤이 있습니다. 하지만 몇 가지를 이해해야합니다.
DirectShow는 오디오/비디오 처리 프레임 워크이며 그래프 편집 도구를 사용하여 장치를 그래프에 놓고 테스트 할 수 있습니다. 그래프 빌드를 위해 유사한 코드를 작성해야합니다. 그래프는 최종 출력을 생성하기 위해 서로 상호 작용하는 장치/객체 체인입니다.
DirectShow는 .NET에서 사용될 수 있습니다. GraphedItPlus 도구를 사용하여 그래프를 만들고 .NET에서 사용 할 수 있지만 DirectShow가 Com에 밀접하게 바인딩되므로 .NET이 알려지지 않은 오류로 이어질 수 있기 때문에 .NET이 더 나을 수 있습니다. ActiveX Control, Native C ++에서 ActiveX Control을 작성하고 DirectShow를 사용하여 전체 녹음을 수행하고 WPF에서 ActiveX를 사용하면 프로그래밍하기가 어렵지만 더 안정적입니다.
일반적으로 다음과 같이 그래프가 필요합니다.
Video Source => Demux -> Audio Stream + Video Stream -> MP4Muxer
X264는 무료 오픈 소스이며 우수한 MP4Muxer를 가지고 있지만 합법적이지 않으므로 코드에서 H264를 사용하기 위해 획득 한 특허 라이센스가 있어야합니다.
대안은 많은 상용 컨트롤을 사용할 수 있습니다. Intel의 IPP는 지금까지 H264의 가장 좋은 구현이지만 직접 쇼를하기에는 약간 까다 롭습니다.
다른 팁
아래는 .NET에서 비디오 캡처를 위해 CodeProject의 2 개의 샘플입니다.
- http://www.codeproject.com/kb/directx/dirxvidstrm.aspx
- http://www.codeproject.com/kb/cs/webcamservice.aspx
그들은 구체적으로 H.264를 포함하지 않습니다. 이를 위해 캡처 한 후 비디오를 사후 처리하고 싶을 수도 있습니다.http://www.elecard.com/products/products-pc/sdk/codec-.net-sdk/