DirectShow(.net)h264编码器/解码器

时间:2015-01-28 12:42:51

标签: c# .net directshow directshow.net

在我的项目中,我必须遵循这个工作流程

  1. 我必须拍摄网络摄像头拍摄的图像并进行预览
  2. 背景中的
  3. 使用H264
  4. 对其进行编码
  5. 将其保存在桌面上
  6. 解码保存的文件进行播放。
  7. 我使用Direct Show .net来实现这一点,我已成功实施第1步,但我现在陷入了从2开始的点数

    我已经进行了很多搜索,因为我需要与.net兼容的东西,但很少有结果真的有用我得到direct show decoder using h264(msdn),但我认为这不是我想要的。 此外,我发现许多关于窗口媒体基础的讨论,但我认为它只适用于本机代码。

    请帮助我解决问题(我需要一个起点)。

1 个答案:

答案 0 :(得分:3)

  

我的问题如何使用h264编码/解码来自directshow的流

由于您使用的是DirectShow,正确的方法是为两种情况创建两个不同的滤镜图(即用于捕获:1,2,3和播放:4)。对于编码/解码,请在滤镜图中使用H264编码器/解码器滤镜。据我所知,DirectShow并不提供内置的H264编码过滤器,但您可以使用第三方DShow过滤器为您完成工作。

简单搜索解码器返回:

如果您对未压缩的捕获视频流使用RGB / A像素格式,请注意某些编码器滤镜可能要求您的视频流采用Luma-chroma类型的像素格式,如YV12或NV12,在这种情况下,您有使用颜色空间转换器过滤器,幸运的是DMO类别中的DShow(作为DMO)支持。

您的捕获图应如下所示:捕获过滤器 - > [Colorspace Convertor] - > H264编码器 - > [多路复用器(例如mp4)] - > Writer过滤器(文件编写器或第三方文件接收器过滤器)

(括号 - []表示可能没有必要使用这些过滤器。)

播放图应为:文件来源 - > [Splitter] - > H264解码器 - >渲染过滤器