在我的项目中,我必须遵循这个工作流程
我使用Direct Show .net来实现这一点,我已成功实施第1步,但我现在陷入了从2开始的点数
我已经进行了很多搜索,因为我需要与.net兼容的东西,但很少有结果真的有用我得到direct show decoder using h264(msdn),但我认为这不是我想要的。 此外,我发现许多关于窗口媒体基础的讨论,但我认为它只适用于本机代码。
请帮助我解决问题(我需要一个起点)。
答案 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解码器 - >渲染过滤器