如何在 C# 中将来自网络摄像头的视频编码为 H.264?
我需要什么
- MSDN 如果对此有任何帮助。
- 用于编码/解码的开源库/包装器。
- 关于如何做的教程和博客文章。
一些关于如何编码为 3GP 或 FLV 或其他文件大小较小的示例的示例将不胜感激。
您将需要查看 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 is free open source and has a good MP4Muxer but not legal, you must have patent licenses acquired for using H264 in your code.
Alternatives are you can go with lots of commercial controls, Intel's IPP is the best implementation of H264 so far, but its little tricky to put it in directshow.
下面是 .NET 中用于视频捕获的 CodeProject 的 2 个示例。
它们不特别包括 H.264。为此,您可能希望在捕获后使用 3rd 方组件对视频进行后处理,例如: http ://www.elecard.com/products/products-pc/sdk/codec-.net-sdk/