decode MPEG1/2 video with Media Foundation

2019-04-13 11:34发布

问题:

I am using Media Foundation to play videos. On windows 7 some videos encoded with Mpeg1/Mpeg2 PS and Windows Media Player can play them, but Media Foundation does not(I tried to register a stub MPEG1Source but it still does not work). I noticed some of these files could be played with directshow but not Media foundation(can not be open at all). I guess "media player" does not use Media Foundation only?

Is it possible to use Media Foundation to play these file? If it is not, how does Media player work? Thanks a lot.

P.S. I have read the windows SDK and I registered a "fake" mpeg1 decode and it shows a blank frame with no time code. Why we need a fake mpeg1 decoder if windows media player can decode it?

This topic is relative to best way to build graph for MPEG2 transport stream

回答1:

Media Foundation does not have inbox support for MPEG-1 or MPEG-2. See: http://msdn.microsoft.com/en-us/library/dd757927(v=VS.85).aspx

Windows Media Player uses various code paths, including DShow, Media Foundation, and Windows Media Format SDK, depending on the source content.



回答2:

I have found some information about this question and set up a MPEG1 source with the fake decoder. The failure I've been through is because bugs in SDK's code. About the MPEG1 decoder, I guess I have to use DShow's decoder in MF. Still have no idea about how MediaPlayer works.



回答3:

In your Microsoft SDK installation directory, go to Microsoft SDKs -> Windows v7.0 -> Samples -> multimedia -> mediafoundation -> Decoder which contains an example MPEG-1 Decoder MFT. You might find it helpful.



回答4:

There is new MPEG-2 Video Decoder MF filter at Windows 8. http://msdn.microsoft.com/en-us/library/windows/desktop/hh162909(v=vs.85).aspx