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

如何在C#中将网络摄像机中的视频编码为H.264?,c#,wpf,encoding,camera,h.264,C#,Wpf,Encoding,Camera,H.264,如何将网络摄像头中的视频编码为C#格式的H.264 我需要什么 MSDN,如果在这方面有任何帮助 用于编码/解码的开源Libs/wrappers 关于如何做到这一点的教程和博客文章 一些关于如何编码成3GP或FLV或其他文件大小较低的东西的例子将不胜感激 下面是CodeProject的两个示例,用于在.NET中捕获视频 它们并不特别包括H.264。为此,您可能希望在捕获后使用第三方组件对视频进行后期处理,例如: 您需要查看DirectShow SDK 直接编码到H.264是不可能的,

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

我需要什么

  • MSDN,如果在这方面有任何帮助
  • 用于编码/解码的开源Libs/wrappers
  • 关于如何做到这一点的教程和博客文章

一些关于如何编码成3GP或FLV或其他文件大小较低的东西的例子将不胜感激

下面是CodeProject的两个示例,用于在.NET中捕获视频

它们并不特别包括H.264。为此,您可能希望在捕获后使用第三方组件对视频进行后期处理,例如:
您需要查看DirectShow SDK

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

DirectShow是音频/视频处理框架,您可以使用图形编辑工具将设备放在图形上并进行测试。您必须编写类似的代码来构建图形,图形是一系列设备/对象,它们相互作用以生成最终输出

DirectShow可以在.NET中使用,您可以使用GraphEdit Plus工具创建图形并在.NET中使用它,但我怀疑.NET是更好的方法,因为DirectShow与COM紧密相连,因此它可能会导致未知错误。如果在ActiveX控件中创建,在本地C++中使用DirectShow进行整个记录,并且在WPF中使用ActiveX,则会更加稳定,但是难以编程。 通常,您需要以下图表:

Video Source => Demux -> Audio Stream + Video Stream -> MP4Muxer 
x264是免费开源的,有一个很好的MP4Muxer,但不合法,在代码中使用H264必须获得专利许可


可供选择的是,您可以使用许多商业控件,英特尔的IPP是迄今为止H264的最佳实现,但将其置于directshow中有点棘手。

hm。。他们捕捉溪流——这很酷,他们不做压缩,这很不酷。第三方组件不是开源的,不是免费的(但非常感谢您的警惕)@Ole:您可以让其他编码器在.NET代码之外完成后期处理。只需触发一个批处理文件类型进程来执行编码。