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

Posted

技术标签:

【中文标题】如何在 Windows 7 上通过 DirectShow 播放 MPEG-TS 视频?【英文标题】:How to play MPEG-TS videos by DirectShow on Windows 7? 【发布时间】:2010-10-28 06:36:40 【问题描述】:

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

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

我的问题是:

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

我尝试过的更多细节:

我还尝试了 Windows SDK 中的 GraphEdit。打开那些 MPEG-TS 视频时,它给出了同样的错误。

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

李>

更沮丧的是,MSDN 说 MPEG-2 Demultiplexer 确实解复用了 MPEG-2 传输和节目流。

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

谢谢

粉丝

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

感谢 user434507。这解释了很多。一个简单的推式文件源很吸引人。我将尝试找到一些有关如何编写此类过滤器的示例或文档。有知道的可以发一下链接吗? 我找到了“DVBPortal HDTV 泵过滤器”dvbportal.de/projects/hdtvpump/index.html。使用它作为源过滤器使 MPEG-TS 视频可以被 MPEG-2 Demux 接受。 另一个问题。我假设 Windows 7 中的 DirectShow 没有提供源过滤器,它可以读取 MPEG-TS 视频并将它们推出。我说的对吗?

以上是关于如何在 Windows 7 上通过 DirectShow 播放 MPEG-TS 视频?的主要内容,如果未能解决你的问题,请参考以下文章

拆分和合并 MP4 视频

在 Windows 7 上通过 QTcpSocket 流式传输图像

如何让 pydoc 命令在 Windows 7 cmd 中工作?

如何通过代码(在cmd中)打开屏幕保护程序(Windows 7)? [关闭]

如何定制Windows Embedded Compact 7 shell详解

如何使端口 80 可用?在 Windows 7 上安装 xampp 1.7.7?