У нас есть приложение, которое использует 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, чего я не делаю, или какие-либо идеи о том, в чем может быть проблема и как заставить это работать.
Спасибо.