Почему видео из ffmpeg не показывается в QuickTime, iMovie или в режиме быстрого предварительного просмотра?

20

Я использовал ffmpeg для случайного преобразования видео в течение довольно долгого времени, и недавно обнаружил, что видео H.264 (libx264), сгенерированные ffmpeg, не работают в iMovie или QuickTime (и при этом они не будут воспроизводиться или отображаться в Finder с функция быстрого просмотра).

Если я генерирую видео с помощью приложений OS X, которые внутренне используют ffmpeg (например, MP4tools или Adapter ), видео работает нормально, но не тогда, когда я пытаюсь использовать ffmpeg напрямую, например, для преобразования видео:

# ffmpeg -i input.avi output.mp4

или объединить несколько изображений в видео:

# ffmpeg -f image2 -pattern_type sequence image-%04d.png output.mp4

iMovie просто импортирует видео как черно-белое, быстрый предварительный просмотр просто показывает информацию о файле (но без предварительного просмотра видео), а Quicktime сообщает, что не может его воспроизвести:

документ не может быть открыт

В чем дело?!

drfrogsplat
источник

Ответы:

31

Короче говоря, вам (часто) нужно включать аргумент -pix_fmt yuv420pпри использовании ffmpeg для генерации контента H.264 для программного обеспечения / устройств Apple и нескольких других декодеров, которые не обрабатывают yuv444p.

# ffmpeg -i input.avi -pix_fmt yuv420p output.mp4

Это не упоминается в выходных данных при использовании значений по умолчанию, но может быть найдено в их руководстве Encode / H.264 .

Это получается, что FFmpeg выбрали формат по умолчанию пикселя yuv444p для кодирования libx264 (при некоторых обстоятельствах), который не совместим с Apple, программного / аппаратного H.264 декодеры (и , возможно , не очень широко совместимы вообще? ). К сожалению, это вряд ли изменится, и об этом нет никаких предупреждений, так что просто кое-что, что вы должны знать, используя ffmpeg для создания файлов H.264.

Насколько я могу судить, если конвертировать видео, которое уже использует yuv420p, оно сохранит это, но если конвертировать из чего-то более экзотического (например, изображения или GIF или что-то еще), формат пикселя должен быть указан для общей совместимости Apple.

drfrogsplat
источник
1
Не помогает в текущей версии iMovie (Yosemite). Есть другие идеи?
Милан Бабушков
1
Можете ли вы опубликовать вывод ffprobe -select_streams v -show_streams output.mp4?
drfrogsplat
+1, даже видео на yuv420p не воспроизводятся и в High Sierra.
trisweb
Не только Apple, но и проигрыватель Windows Media иногда не может воспроизвести вывод, если вы не укажете эту опцию. И если вы попробуете поиграть с другими игроками, это будет скучный серый экран с артефактами, отображаемыми на видео.
Шаян