2009-10-31 141 views
3

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

需要什么

  • MSDN如果有任何帮助这一点。
  • 开源利布斯/用于编码/解码的包装器。
  • 上怎么做教程和博客文章。

一些如何编码到3GP或FLV或其他低文件大小的例子将不胜感激。

回答

2

您需要查看DirectShow SDK。

编码成H.264是直接不可能的,但也有商业的ActiveX控件,可以帮助你。但是,你需要了解一些东西,

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

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

通常,您将需要图如下,

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

X264是免费开源的,具有良好的MP4Muxer但收购在代码中使用H264不合法的,你必须有专利许可。

替代品你可以去很多商业控制,英特尔的IPP是迄今为止最好的H264实现,但它的一点点棘手,把它放在directshow。

1

下面是从CodeProject 2个样品视频捕捉.NET。

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

+0

HM ..大公捕获流 - 这是很酷的大公做没有cmpression它的不冷静。第三方组件不是开源的,不是免费的(但是非常感谢你的提示) – Rella 2009-10-31 01:03:36

+0

@Ole:你可以通过.NET代码之外的其他编码器完成后期处理。只需触发批处理文件类型进程即可执行编码。 – 2009-10-31 01:07:44

相关问题