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


20

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

Якщо я генерую відео за допомогою програм X X, які внутрішньо використовують ffmpeg (наприклад, MP4tools або Adapter ), відео працює нормально, але не тоді, коли я намагаюся використовувати ffmpeg безпосередньо, наприклад для перетворення відео:

# ffmpeg -i input.avi output.mp4

або об'єднати деякі зображення у відео:

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

iMovie просто імпортує відео як чорний / порожній, швидкий попередній перегляд просто показує інформацію про файл, (але немає попереднього перегляду відео), і Quicktime говорить мені, що не може відтворити його:

документ не вдалося відкрити

Що відбувається?!

Відповіді:


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.


1
Не допомагає в поточній версії iMovie (Yosemite). Будь-які інші ідеї?
Мілан Бабушков

1
Чи можете ви розмістити вихід ffprobe -select_streams v -show_streams output.mp4?
drfrogsplat

+1, навіть відео yuv420p також не відтворюються у Високій Сьєррі.
trisweb

Не тільки Apple, але і медіаплеєр Windows іноді не можуть відтворити вихід, якщо не вказати цю опцію. І якщо ви спробуєте грати з іншими програвачами, це буде комед-сірий екран із артефактами, що відображається на відео.
Шаян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.