构建 MPEG2 传输流图的最佳方法
在 Windows 7 上,Windows Media Player 很好地支持 .ts 文件, 从某种意义上说,Windows Media Player 知道如何处理此类文件,而无需任何其他编解码器包。
但是,如果我尝试使用 graphedit“渲染”.ts 文件,它会抱怨 不知道如何为其构建图表。
Windows Media Player 使用什么方法来解复用/解码这些文件? 是直播吗? Windows 媒体基金会?商业发展局?微软电视技术?统一调优模型?
无论他们使用什么方法,都可以作为 API 在我的自定义应用程序中使用吗?
on windows 7 the windows media player supports .ts files very well,
in the sense that windows media player knows how to handle such files without any additional codec packs.
however if I try to use graphedit to "render" a .ts file, it complains it
doesnt know how to build a graph for it.
what method does windows media player use to demux/decode these files?
is it directshow? windows media foundation? BDA? Microsoft TV Technologies? unified tuning model?
whatever the method they use, is available as an API to be used in my custom application?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在仅使用 Microsoft 过滤器的 DirectShow 中,可能会有点混乱。 Mpeg2 解复用器需要使用 IMpeg2De Multiplexer 接口或通过属性页为内容流添加输出引脚。通常,您需要将其他东西连接到过滤器来解析 PSI/PAT 信息并识别传输流内内容流的节目 ID。 Microsoft 提供了一个 SDK 示例来执行以下操作这在 Windows 平台 SDK 中。
这是假设您有一个常规的 mpeg2 传输流文件。您可以使用免费应用程序 MediaInfo 或 TsReader Lite 来准确查看 ts 文件中的内容。
有一些非 Microsoft 过滤器可以使处理 DirectShow 中的传输流变得更加容易。开源过滤器 Haali Media Splitter 和 Ffdshow 的组合无需任何额外配置即可完成此操作。或者来自 MainConcept、Elecard、LEADTools 等的商业过滤器包。
我没有对 Media Foundation 做过太多实践工作,所以我在这方面没有太多建议可以提供。较新版本的 Windows Media Player 使用 MF 而不是 DirectShow。一些(但不是全部)新的 MF 功能也通过 DirectShow 接口公开。
In DirectShow using only Microsoft filters it can be a bit of a mess. The Mpeg2 Demultiplexer needs to be manually configured through code using the IMpeg2Demultiplexer interface or through the property pages to add output pins for the content streams. Normally you would need to connect something else to the filter to parse the PSI/PAT information and identify the program ids of the content streams inside the transport stream. Microsoft provides an SDK sample to do this in the Windows Platform SDK.
This is assuming that you have a regular mpeg2 transport stream file. You can use the free apps MediaInfo or TsReader Lite to see exactly what is in your ts file.
There are non-Microsoft filters that make handling transport streams in DirectShow a lot easier. The combination of the open source filters Haali Media Splitter and Ffdshow will do it without any extra configuration. Or commercial filter packages from MainConcept, Elecard, LEADTools, etc.
I haven't done much hands-on work with Media Foundation, so I don't have much advice to offer on that front. Newer versions of Windows Media Player use MF instead of DirectShow. Some, but not all, new MF functionality is also exposed through DirectShow interfaces.
我不确定 Windows Media Player 使用的方法。
我使用 DirectShow 来构建图表。从源中,您可以添加 MPEG-2 解复用器,创建音频和视频引脚(使用 IMpeg2De Multiplexer 接口),然后将音频引脚连接到“Microsoft DTV-DVD 音频解码器”,将视频引脚连接到“Microsoft DTV” -DVD 视频解码器”。然后,您可以将输出输入音频和视频渲染器。
例如,这是我使用过的图表的一部分:
David
I'm not sure of the method used by Windows Media Player.
I've used DirectShow to build a graph. From the source, you can add an MPEG-2 Demultiplexer, create the Audio and Video pins (using the IMpeg2Demultiplexer interface), then hook the Audio pin to the "Microsoft DTV-DVD Audio Decoder" and the Video pin to the "Microsoft DTV-DVD Video Decoder". You can then feed the outputs into an audio and a video renderer.
For example, here is part of a graph I have used:
David