为MPEG2传输流构建图形的最佳方法

时间:2011-02-22 13:25:22

标签: windows-7 directshow windows-media-player mpeg-2 ms-media-foundation

Windows 7上的Windows媒体播放器非常支持.ts文件, 从某种意义上说,Windows媒体播放器知道如何在没有任何其他编解码器包的情况下处理这些文件。

但是,如果我尝试使用graphedit“渲染”.ts文件,它会抱怨它 不知道如何为它构建图表。

Windows Media Player使用什么方法来解复用/解码这些文件? 它是directshow吗? Windows媒体基金会? BDA?微软电视技术?统一调整模型?

无论使用哪种方法,都可以作为我的自定义应用程序中使用的API?

2 个答案:

答案 0 :(得分:4)

在仅使用Microsoft过滤器的DirectShow中,它可能有点混乱。需要使用IMpeg2Demultiplexer接口或属性页通过代码手动配置Mpeg2解复用器,以添加内容流的输出引脚。通常,您需要将其他内容连接到过滤器以解析PSI / PAT信息,并识别传输流内的内容流的程序ID。 Microsoft在Windows Platform SDK中提供SDK sample来执行此操作。

这假设您有一个常规的mpeg2传输流文件。您可以使用免费应用MediaInfoTsReader Lite查看您的ts文件中的确切内容。

有一些非Microsoft过滤器可以更轻松地处理DirectShow中的传输流。开源过滤器Haali Media Splitter和Ffdshow的组合将在没有任何额外配置的情况下完成。或来自MainConcept,Elecard,LEADTools等的商业过滤器包

我没有与Media Foundation进行过多次动手工作,所以我在这方面没有太多建议。较新版本的Windows Media Player使用MF而不是DirectShow。一些(但不是全部)新MF功能也通过DirectShow接口公开。

答案 1 :(得分:3)

我不确定Windows Media Player使用的方法。

我使用DirectShow构建图表。从源代码中,您可以添加MPEG-2解复用器,创建音频和视频引脚(使用IMpeg2Demultiplexer接口),然后将音频引脚挂接到“Microsoft DTV-DVD音频解码器”,将视频引脚挂钩到“Microsoft DTV” -DVD Video Decoder“。然后,您可以将输出提供给音频和视频渲染器。

例如,以下是我使用过的图表的一部分: Render Graph

大卫