Я использую 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 сообщает мне, что не может его воспроизвести:
В чем дело?!
Короче говоря, вам (часто) необходимо включать аргумент -pix_fmt yuv420p
при использовании ffmpeg для создания контента H.264 для программного обеспечения/устройств Apple и множества других декодеров, которые не обрабатывают yuv444p.
# ffmpeg -i input.avi -pix_fmt yuv420p output.mp4
Это не упоминается в выводе при использовании значений по умолчанию, но его можно найти в их руководстве по Encode/H.264 .
Оказывается , ffmpeg выбрал формат пикселей по умолчанию yuv444p для кодирования libx264 (при некоторых обстоятельствах), который несовместим с программными/аппаратными декодерами H.264 от Apple (и , возможно, не очень широко совместим в целом? ). К сожалению, маловероятно, что это изменится, и об этом нет никаких предупреждений, так что просто кое-что, что вам нужно знать, если вы используете ffmpeg для создания файлов H.264.
Насколько я могу судить, при преобразовании видео, которое уже использует yuv420p, оно сохранится, но при преобразовании из чего-то более экзотического (например, изображения или GIF или что-то еще) формат пикселей должен быть указан для общей совместимости с Apple.
В дополнение к yuv420p
, некоторые открытия по кодекам в 2021 году (Catalina 10.15.7 и Monterey 12.0.1, imovie 10.3 и 10.2.5, ffmpeg 4.4).
Не все *264
кодеки одинаковы. Кодек -c:v libx264
не может быть последовательно импортирован. Вместо этого используйте -c:v h264_videotoolbox
.
Это верно для «Apple Silicon» (он же ARM) и процессоров Intel.
Ни libx265, ни hevc_videotoolbox не могут быть последовательно импортированы, если вообще импортированы.
(редактировать, несколько дней спустя у меня было видео, которое не импортировалось с -c:v hd264_videotoolbox
. Оно работало с , поэтому нужно попробовать еще одну вещь )-c:v copy -c:a copy
Милан Бабушков
дрфрогсплат
ffprobe -select_streams v -show_streams output.mp4
?тройная паутина
Шаян
Дэвид Лорд