2017-02-05 19 views
0

Моя программа использует Windows Media Foundation WMV/WMA MFT для кодирования в формате ASF (мультиплексор выполняется с помощью ffmpeg). Сгенерированный файл может отлично воспроизводиться проигрывателем Windows Media на Win10, но не был отображен GraphEdit, код ошибки == NS_E_INVALID_DATA (0xC00D002FL).Файл ASF не может быть отображен GraphEdit, но может быть воспроизведен WMP

Такая же ошибка возникает, когда IWMSyncReader-> GetNextSample используется для чтения аудиофрагмента.

Образца сломанные видео здесь: https://www.dropbox.com/s/x8uyaqbclq93u5d/big_buck_bunny.wmv?dl=0

Может кто-нибудь взглянуть, чтобы проверить причину? Thanks

+1

Разбитое видео не содержит объекты расширенного потока для видео и аудио. Вы можете изучить его с помощью инструмента, такого как MS Windows Media ASF Viewer: https://www.microsoft.com/en-us/download/details.aspx?id=12826. Кажется, что вам необходимо правильно настроить приемник ASF, чтобы создать свойства Extended stream. – VuVirt

+0

Кстати, я использовал простую программу SimplePlay на Win7 и Win10, видео можно воспроизводить на обеих платформах отлично. Может ли это быть вызвано некоторым ограничением Windows Media API? – rhbc73

+0

Он также может отлично играть в WMP как на Win7, так и на Win10. Только Windows Media API не может читать аудио. – rhbc73

ответ

0

После изучения вашего wmv-файла с помощью Windows Media ASF Viewer я пришел к выводу, что он был закодирован с помощью кодера Lavf (FFMPEG). Поэтому я установил LAV directshow filters и сыграл wmv с Graphstudionext. Я добавил файл в качестве источника файла async, после чего граф автоматически использовал разделитель LAV. Кажется, что только LAV-сплиттер способен разбирать этот wmv. В своем приложении вы можете сделать то же самое, добавив файл через File source async filter и пусть LAV проанализирует его (если установлен).