DirectShow(.net) h264 Encoder/decoder

DirectShow(.net) h264 Encoder/decoder

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

  1. 我必须拍摄网络摄像头拍摄的图像并进行预览
  2. 后台使用H264编码
  3. 将其保存在桌面上
  4. 解码保存的文件以进行播放。

我已经使用 Direct Show .net 来实现它,并且我已经成功地实现了第 1 步,但我现在陷入了从 2 开始的点

我进行了大量搜索,因为我需要与 .net 兼容的东西,但很少有结果真正有用我知道有 direct show decoder using h264(msdn),但我认为这不是我要找的东西。 我还发现很多关于 window 媒体基础的讨论,但我认为它只适用于本机代码。

请帮我出出主意(我需要一个起点)。

my question how to encode/decode stream from directshow using h264

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

解码器的简单搜索返回了这个:

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

您的捕获图应如下所示:捕获过滤器 -> [色彩空间转换器] -> H264 编码器 -> [多路复用器(例如 mp4)] -> 写入器过滤器(文件写入器或第三方文件接收器过滤器)

(方括号 - [] 表示可能不需要使用这些过滤器。)

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