如何在Windows 7上通过DirectShow播放MPEG-TS视频?

时间:2010-10-28 06:36:41

标签: windows winapi video directshow mpeg

我们的应用程序使用IGraphBuilder::RenderFile来构建过滤器图。在Windows 7上,此应用程序可以流畅播放MPEG-PS视频,但无法打开/播放MPEG-TS(传输流)视频。 IGraphBuilder::RenderFile会返回错误代码VFW_E_UNSUPPORTED_STREAM

在我的Windows 7上,Windows Media Player可以打开/播放那些MPEG-TS HDV视频。

我的问题是:

  1. 是否可以在Windows 7上通过DirectShow加载/播放MPEG-TS视频,而Windows 7只安装了过滤器?因为我们最好不要求用户安装某些第三方DirectShow过滤器。
  2. 如果不可能,是否有一些流行的编解码器可以处理MPEG-TS HDV,并且最多也适合DirectShow。
  3. 我尝试了一些细节:

    • 我还在Windows SDK中尝试过GraphEdit。打开那些MPEG-TS视频时会出现同样的错误。

    • 如果我将一个MPEG-TS视频添加为File Source(Async),则其输出引脚标记为Major Type: Stream, SubType: GUID_NULL,并且无法连接到其他过滤器,例如MPEG-2 Demultiplexer

    • 更加沮丧,MSDNMPEG-2 Demultiplexer确实解复用了MPEG-2传输和节目流。

    所以,我很可能错过了一些东西。经过几天的挖掘,我现在对这个问题非常绝望。任何建议都欢迎和赞赏。

    由于

1 个答案:

答案 0 :(得分:2)

您无法将文件源(Async)连接到MPEG-2 Demux的原因是文件源在拉模式下运行,而MPEG-2 demux仅在推模式下支持TS。

Haali媒体分割器可以解复用MPEG-2 TS。如果您不想强制用户安装它,也许您可​​以编写一个简单的推式文件源过滤器并将其手动插入到图表中。