使用Media Foundation进行mp4-h264视频解码

时间:2011-08-26 10:57:55

标签: video decode h.264 mp4 ms-media-foundation

我正在测试如何使用MS Media Foundation SDK集成libavcodec(http://en.wikipedia.org/wiki/Libavcodec),以便将h264无损格式视频解码为YUV / RGB原始数据

我有两个问题:

  1. 我遇到了将用h264 / AVC(常规,非无损格式)编码的mp4视频加载到MFPlayer(在VS2010中从MF SDK示例编译)的问题,错误代码是:错误的字节流。 当我尝试加载相同的视频作为流(源代码阅读器代码取自http://msdn.microsoft.com/en-us/library/dd389281%28v=VS.85%29.aspx)或使用反编码示例进行会话时,发生了同样的错误。 可能是任何人都可以分享使用Media Foundation加载mp4-h264视频的经验。

  2. 我应该将第三方编解码器集成到基于Media Foundation的解码中。 根据MSDN,Media Foundation对第三方编解码器有一些支持,但是我没有找到使用第三方编解码器进行解码的示例。 可能有人这样做了吗?或者可以参考可用的例子如何做到这一点。

  3. 提前致谢, 吉夫

1 个答案:

答案 0 :(得分:0)

  

(2)我应该将第三方编解码器集成到基于Media Foundation的解码中。根据MSDN,Media Foundation对第三方编解码器有一些支持,但是我没有找到使用第三方编解码器进行解码的示例。可能有人这样做了吗?或者可以参考可用的例子如何做到这一点。

这是可能的。基本上,它涉及为第三方解码器写Media Foundation Transform。查看SDK安装目录。转到Microsoft SDKs -> v7.0 -> Samples -> Multimedia -> Mediafoundation -> Decoder。它包含一个MPEG1解码器MFT示例。您需要做的是适当地继承IMFTransform接口并实现其方法。例如,媒体客户端将调用ProcessInput()方法为您的解码器MFT提供媒体样本。同样,它会调用ProcessOutput()来获取解码输出。简而言之,MFT充当第三方解码器的包装器。