Декодировать видео MPEG1/2 с помощью Media Foundation
Я использую Media Foundation для воспроизведения видео. В Windows 7 некоторые видео, закодированные с помощью Mpeg1/Mpeg2 PS и Windows Media Player, могут воспроизводить их, но Media Foundation этого не делает (я пытался зарегистрировать заглушку MPEG1Source, но она все еще не работает). Я заметил, что некоторые из этих файлов можно воспроизводить с помощью DirectShow, но не с Media Foundation(не могут быть открыты вообще). Я думаю, "медиаплеер" не использует только Media Foundation?
Можно ли использовать Media Foundation для воспроизведения этих файлов? Если это не так, как работает Media Player? Большое спасибо.
PS Я прочитал Windows SDK и зарегистрировал "поддельный" декодер mpeg1, и он показывает пустую рамку без временного кода. Зачем нам нужен поддельный декодер mpeg1, если Windows Media Player может его декодировать?
Эта тема относится к лучшему способу построения графика для транспортного потока MPEG2.
4 ответа
Media Foundation не поддерживает входящие сообщения для MPEG-1 или MPEG-2. Смотрите: http://msdn.microsoft.com/en-us/library/dd757927(v=VS.85).aspx
Проигрыватель Windows Media использует различные пути кода, в том числе DShow, Media Foundation и SDK формата Windows Media, в зависимости от исходного содержимого.
В Windows 8 появился новый фильтр MPEG-2 Video Decoder MF. http://msdn.microsoft.com/en-us/library/windows/desktop/hh162909(v=vs.85).aspx
Я нашел некоторую информацию по этому вопросу и настроил источник MPEG1 с поддельным декодером. Ошибка, через которую я прошел, вызвана ошибками в коде SDK. Что касается декодера MPEG1, я думаю, что я должен использовать декодер DShow в MF. До сих пор не имею представления о том, как работает MediaPlayer.
В каталоге установки Microsoft SDK перейдите к Microsoft SDKs -> Windows v7.0 -> Samples -> multimedia -> mediafoundation -> Decoder
который содержит пример декодера MPEG-1 MFT. Вы можете найти это полезным.