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

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

我需要什么

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

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

您需要查看DirectShow SDK。

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

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

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中有点棘手。

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

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