Mengapa video dari ffmpeg tidak ditampilkan di QuickTime, iMovie, atau pratinjau cepat?

20

Saya telah menggunakan ffmpeg untuk konversi video sesekali selama beberapa waktu, dan baru-baru ini menemukan bahwa video H.264 (libx264) yang dihasilkan oleh ffmpeg tidak berfungsi di iMovie atau QuickTime (mereka juga tidak akan memutar atau menampilkan pratinjau di Finder dengan fitur tampilan cepat).

Jika saya menghasilkan video menggunakan aplikasi OS X yang secara internal menggunakan ffmpeg (mis. MP4tools atau Adaptor ) video berfungsi dengan baik, tetapi tidak ketika saya mencoba menggunakan ffmpeg secara langsung, misalnya untuk mengkonversi video:

# ffmpeg -i input.avi output.mp4

atau untuk menggabungkan beberapa gambar menjadi video:

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

iMovie hanya mengimpor video sebagai hitam / kosong, pratinjau cepat hanya menampilkan info file, (tetapi tidak ada pratinjau video), dan Quicktime memberitahu saya itu tidak dapat memutarnya:

dokumen tidak dapat dibuka

Apa yang sedang terjadi?!

drfrogsplat
sumber

Jawaban:

31

Singkatnya, Anda (sering) perlu menyertakan argumen -pix_fmt yuv420pketika menggunakan ffmpeg untuk menghasilkan konten H.264 untuk perangkat lunak / perangkat Apple, dan sekelompok decoder lain yang tidak menangani yuv444p.

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

Ini tidak disebutkan dalam output saat menggunakan default, tetapi dapat ditemukan dalam panduan Encode / H.264 mereka .

Ini ternyata yang ffmpeg telah memilih format standar pixel yuv444p untuk libx264 encoding (dalam kondisi tertentu), yang tidak kompatibel dengan perangkat lunak Apple / hardware H.264 decoder (dan mungkin tidak terlalu banyak kompatibel secara umum? ). Sayangnya ini sepertinya tidak mungkin berubah, dan tidak ada peringatan tentang itu, jadi hanya sesuatu yang harus Anda ketahui jika menggunakan ffmpeg untuk membuat file H.264.

Sejauh yang saya tahu, jika mengonversi video yang sudah menggunakan yuv420p itu akan mempertahankan itu, tetapi jika mengonversi dari sesuatu yang sedikit lebih eksotis (misalnya gambar atau GIF atau apa pun) format piksel harus ditentukan untuk kompatibilitas Apple secara umum.

drfrogsplat
sumber
1
Tidak membantu dalam versi iMovie (Yosemite) saat ini. Ada ide lain?
Milan Babuškov
1
Bisakah Anda memposting output ffprobe -select_streams v -show_streams output.mp4?
drfrogsplat
+1, bahkan video yuv420p juga tidak diputar di High Sierra.
trisweb
Tidak hanya Apple, tetapi juga Windows media player kadang-kadang tidak dapat memutar output jika Anda tidak menentukan opsi itu. Dan jika Anda mencoba bermain dengan pemain lain, itu akan menjadi layar abu-abu dengan artefak yang ditampilkan di video.
Shayan