Dlaczego wideo z ffmpeg nie wyświetla się w QuickTime, iMovie ani w szybkim podglądzie?

20

Od czasu do czasu używam ffmpeg do sporadycznej konwersji wideo, a ostatnio odkryłem, że filmy H.264 (libx264) generowane przez ffmpeg nie działają w iMovie lub QuickTime (nie będą też odtwarzać ani wyświetlać podglądu w Finderze z funkcja szybkiego podglądu).

Jeśli generuję wideo przy użyciu aplikacji OS X, które wewnętrznie używają ffmpeg (np. MP4tools lub Adapter ), filmy działają dobrze, ale nie kiedy próbuję użyć ffmpeg bezpośrednio, np. Do konwersji wideo:

# ffmpeg -i input.avi output.mp4

lub połączyć kilka zdjęć w wideo:

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

iMovie po prostu importuje wideo jako czarne / puste, szybki podgląd pokazuje tylko informacje o pliku (ale bez podglądu wideo), a Quicktime mówi mi, że nie może go odtworzyć:

nie można otworzyć dokumentu

Co się dzieje?!

drfrogsplat
źródło

Odpowiedzi:

31

Krótko mówiąc, musisz (często) dołączyć argument, -pix_fmt yuv420pgdy używasz ffmpeg do generowania treści H.264 dla oprogramowania / urządzeń Apple oraz kilku innych dekoderów, które nie obsługują yuv444p.

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

Nie jest to wspomniane w danych wyjściowych podczas korzystania z ustawień domyślnych, ale można je znaleźć w ich instrukcji Encode / H.264 .

To okazuje się, że ffmpeg wybrali domyślnego formatu piksela yuv444p do kodowania libx264 (w pewnych okolicznościach), który nie jest kompatybilny z Apple oprogramowania / sprzętu dekodery H.264 (i chyba nie bardzo szeroko kompatybilny w ogóle? ). Niestety wydaje się mało prawdopodobne, aby to się zmieniło i nie ma o tym ostrzeżenia, więc po prostu musisz wiedzieć, jeśli używasz ffmpeg do tworzenia plików H.264.

O ile mogę stwierdzić, jeśli konwertuje wideo, które już używa yuv420p, zachowa to, ale jeśli konwertuje z czegoś nieco bardziej egzotycznego (np. Obrazy lub GIF lub cokolwiek innego), format pikseli musi być określony dla ogólnej kompatybilności Apple.

drfrogsplat
źródło
1
Nie pomaga w aktualnej wersji iMovie (Yosemite). Jakieś inne pomysły?
Milan Babuškov
1
Czy możesz opublikować wynik ffprobe -select_streams v -show_streams output.mp4?
drfrogsplat
+1, nawet filmy yuv420p również nie są odtwarzane w High Sierra.
trisweb,
Nie tylko Apple, ale także Windows Media Player czasami nie może odtworzyć wyjścia, jeśli nie określisz tej opcji. A jeśli spróbujesz grać z innymi graczami, będzie to duży szary ekran z artefaktami wyświetlanymi na wideo.
Shayan