2017-07-24 154 views
0

我已经使用Media Foundation API编写了一个程序,该程序需要一个AVI文件并将其视频样本解码为未压缩的RGB帧。Media Foundation外部编解码器支持

最近,我发现一个包含音频和视频轨道的AVI文件,但Windows Media Player没有播放视频轨道(正在播放音频)。

我试图用另一个播放器(Gom Player)打开文件,它建议我下载更多的编解码器包:LEAD MJPG/MCMP Video Codec。安装之后,WMP开始解码并播放视频轨道。但之后,我再次无法使用MF API解码文件。

我的猜测是Media Foundation仅限于Windows发布的内容。是对的吗?

此外,是告诉媒体​​基金会使用外部安装的编解码器解码的方法?

回答

2

Media Foundation API提供可扩展性,但Media Foundation可接受的编解码器需要提供相应的格式:它们应该可用并注册为Media Foundation转换。这是一种罕见的情况,因为Media Foundation并不普遍,大部分可下载的编解码器都具有DirectShow API接口或Video For Windows API接口,但Media Foundation不支持。

如果你有一个合适的编解码器,媒体基金会可能会选择它。

Windows Media Player尝试通过Media Foundation播放,或者在发生故障时回退到DirectShow。这解释了为什么可下载的编解码器修复了Windows Media Player而不是Media Foundation。

+0

是否有示例代码或演示如何使用DirectShow API解码媒体文件的示例? – mbaros

+1

[Windows SDK 7.1]中有DirectShow示例(https://www.microsoft.com/en-us/download/details.aspx?id=8279)。其中一些也在[这里]描述(https://msdn.microsoft.com/en-us/library/windows/desktop/dd375468)。 [如何播放文件](https://msdn.microsoft.com/en-us/library/windows/desktop/dd389098)可能是一个很好的介绍。 –

+0

非常感谢。 – mbaros