Perché i video di ffmpeg non vengono visualizzati in QuickTime, iMovie o in anteprima rapida?


20

Sto usando ffmpeg per la conversione video occasionale da un po 'di tempo e recentemente ho scoperto che i video H.264 (libx264) generati da ffmpeg non funzionano in iMovie o QuickTime (né riprodurranno o mostreranno un'anteprima in Finder con la funzione di visualizzazione rapida).

Se generi video utilizzando applicazioni OS X che utilizzano internamente ffmpeg (ad esempio MP4tools o Adapter ) i video funzionano correttamente , ma non quando provo a utilizzare direttamente ffmpeg, ad esempio per convertire un video:

# ffmpeg -i input.avi output.mp4

o per combinare alcune immagini in un video:

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

iMovie importa solo il video come bianco / nero, l'anteprima rapida mostra solo le informazioni sul file (ma non l'anteprima del video) e Quicktime mi dice che non è possibile riprodurlo:

non è stato possibile aprire il documento

Cosa sta succedendo?!

Risposte:


31

In breve, è necessario (spesso) includere l'argomento -pix_fmt yuv420pquando si utilizza ffmpeg per generare contenuto H.264 per software / dispositivi Apple e un sacco di altri decodificatori che non gestiscono yuv444p.

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

Questo non è menzionato nell'output quando si usano le impostazioni predefinite, ma può essere trovato nella loro guida Encode / H.264 .

Si scopre che ffmpeg ha scelto un formato pixel predefinito di yuv444p per la codifica libx264 (in alcune circostanze), che non è compatibile con i decodificatori H.264 software / hardware di Apple (e forse non molto ampiamente compatibile in generale? ). Sfortunatamente questo sembra improbabile che cambi, e non ci sono avvertimenti a riguardo, quindi solo qualcosa che devi sapere se usi ffmpeg per creare file H.264.

Per quanto ne so, se si converte un video che sta già utilizzando yuv420p lo manterrà, ma se si converte da qualcosa di un po 'più esotico (ad esempio immagini o GIF o altro), è necessario specificare il formato pixel per la compatibilità generale di Apple.


1
Non aiuta nella versione corrente di iMovie (Yosemite). Altre idee?
Milano Babuškov,

1
Puoi pubblicare l'output di ffprobe -select_streams v -show_streams output.mp4?
drfrogsplat,

+1, anche i video yuv420p non vengono riprodotti in High Sierra.
trisweb,

Non solo Apple, ma anche Windows Media Player a volte non è in grado di riprodurre l'output se non si specifica tale opzione. E se provi a giocarci con altri giocatori, sarebbe uno schermo grigio comeple con artefatti mostrati in video.
Shayan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.