ffmpeg API, кодирующий mpeg-4, ошибка проигрывателя Windows Media

У нас есть приложение, которое использует API ffmpeg C для кодирования файлов mpeg-4 (AV_CODEC_ID_MPEG4) в контейнере mp4. Проблема в том, что файлы не воспроизводятся в проигрывателе Windows Media или в приложении «Кино и ТВ» для видеопроигрывателя Windows 10. Он воспроизводится в VLC, Google Chrome, видеоплеере Ubuntu и во всех других видеоплеерах, которые я пробовал.

Два проигрывателя Windows могут воспроизводить другие файлы, закодированные с помощью mpeg-4, в контейнере mp4. Я также протестировал перекодирование видеофайлов в тот же формат с помощью инструмента командной строки ffmpeg и успешно смог воспроизвести видео с помощью следующей команды:

ffmpeg input.avi -c:v mpeg4 output.mp4

Пока я обнаружил, что следующие команды не работают:

ffmpeg input.avi -c:v mpeg4 -vtag xvid output.mp4

ffmpeg input.avi -c:v libxvid output.mp4

# the last command wont play with windows media player but VLC can still play it. If the extension of the output file is changed to avi for the last two commands then Windows media player can play it.

Я начал смотреть код ffmpeg src, но он кажется немного большим/сложным, я попытался использовать более простой пример «encode_video.c», который мог кодировать видео и воспроизводить его в видеоплеере Ubuntu по умолчанию, но VLC или Windows Media Player мог играть в нее.

Нам нужно кодировать их с помощью API ffmpeg, а не инструмента командной строки, поэтому мне интересно, что делает инструмент командной строки ffmpeg, чего я не делаю, или какие-либо идеи о том, в чем может быть проблема и как заставить это работать.

Спасибо.


person user1505129    schedule 08.06.2017    source источник
comment
Можете ли вы показать небольшой фрагмент кода, где вы используете API, и в результате вы создаете файл, который не читается двумя проигрывателями Windows? Это может помочь мне и другим сузить круг вашей проблемы.   -  person Pedro    schedule 09.06.2017


Ответы (1)


Согласно это и это Воспроизведение XVid не поддерживается приложением «Кино и ТВ», а также другими приложениями Win Store, использующими стандартные возможности видео WinRT. И в соответствии с это он также не поддерживается проигрывателем Windows Media. Если вам удалось воспроизвести его с помощью проигрывателя Windows Media, скорее всего, у вас был установлен соответствующий сторонний кодек Direct Show. На самом деле нет смысла использовать XVid в 2017 году, вместо этого используйте h264.

person user7860670    schedule 09.06.2017
comment
Мне сказали, что кодировщики h264 в ffmpeg являются проприетарными, иначе мы, вероятно, использовали бы h264. - person user1505129; 09.06.2017
comment
Также ваша ссылка показывает, что проигрыватель Windows Media 12 поддерживает файлы .mp4. Я также протестировал другие видео в формате mp4/mpeg4 на свежеустановленной Windows 10, и они работают. - person user1505129; 09.06.2017