我正在开发一个h264 directshow过滤器。
我有一个有效的硬件源,可以正确输出NAL单元。 我有一个DirectShow过滤器,它广告h264并成功连接到默认的Windows 7解码器microsoft dtv-dvd视频解码器。
当我将渲染器连接到解码器时,渲染器不会获取任何数据包,因此我认为解码器无法正确解码数据包。
[h264来源] - > [dtv-dvd decoder] - > [增强视频渲染器]
我有什么方法可以检查微软解码器失败的位置吗?
任何其他信息可能会有所帮助
答案 0 :(得分:3)
您遇到的困难是您没有dtv-dvd解码器的代码,使其成为管道中的黑盒子。您的h264 Source可以连接到dtv-dvd解码器,这意味着您可以在媒体格式协商方面取得良好的开端。为了更好地了解出错的原因,我建议您将dtv-dvd解码器更换为具有源代码的解码器,然后使用GraphEdit或其中一个类似工具调试管道。我一直在做同样的开发,并且发现一旦我使用一个解码器滤波器使h264管道正常工作,它通常可以与其他h264解码器一起正常工作。
以下是一些包含源代码的选项:
Intel Media SDK 2012包含一个示例h264解码器过滤器。
如果你有一个Nvidia GPU,你可以尝试这个开源CUDA Decode Filter
另外,我发现dtv-dvd过滤器有点挑剔。使用二进制形式的以下解码器过滤器之一进行测试可能会有所帮助:
Nanocosmos基于directshow有一个非常好的“AVC/h264 decoder Decoder SDK”。 (免费评估)
“CoreCodec's CoreAVC”包括支持CUDA和DXVA的最快的h264解码器之一(商用 - 售价12.95美元)
MainConcept的h264解码器过滤器可用作“MainConcept Showcase”(免费评估)的一部分