如何将网络摄像机中的视频编码为C#中的H.264?

时间:2009-10-31 00:47:12

标签: c# wpf encoding camera h.264

如何将网络摄像头中的视频编码为C#中的H.264?

我需要什么

  • MSDN如果有任何帮助。
  • 用于编码/解码的开源库/包装器。
  • 有关如何操作的教程和博客文章。

如何编码为3GP或FLV或其他低文件大小的其他例子将不仅仅是值得赞赏的。

2 个答案:

答案 0 :(得分:2)

您需要查看DirectShow SDK。

直接编码到H.264是不可能的,但是有商业的activex控件可以帮助你。但是你需要了解一些事情,

DirectShow是音频/视频处理框架,您可以使用图形编辑工具将您的设备放在图表上并进行测试。而且你必须编写类似的代码来构建图形,图形是相互交互以产生最终输出的设备/对象链。

DirectShow可以在.NET中使用,您可以使用GraphEditPlus工具创建图形并在.NET中使用它,但我怀疑.NET是更好的方法,因为它可能导致未知错误,因为DirectShow与COM紧密绑定。如果你创建ActiveX控件,在本机C ++中使用DirectShow进行整个录制,并在WPF中使用ActiveX,那么编程就会更加稳定。

通常,您需要图表如下,

Video Source => Demux -> Audio Stream + Video Stream -> MP4Muxer 

x264是免费的开源软件,并且具有良好的MP4Muxer但不合法,您必须拥有在代码中使用H264而获得的专利许可。

替代方案是你可以使用大量的商业控制,到目前为止,英特尔的IPP是H264的最佳实现,但是将它放在directshow中是有点棘手的。

答案 1 :(得分:1)

以下是来自CodeProject for Visual Capturing in .NET的2个样本。

它们不包括H.264。为此,您可能希望在捕获后使用第三方组件对视频进行后处理。 http://www.elecard.com/products/products-pc/sdk/codec-.net-sdk/