Come posso convertire un GIF animato in un mp4 o mv4 dalla riga di comando?


79

Quale comando userei per convertire un file video mp4 o mv4 in una gif animata e viceversa. Cioè, converti un GIF animato in un mp4 o mv4.

Risposte:


108

Ecco cosa ha funzionato per me:

ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4

movflags - Questa opzione ottimizza la struttura del file MP4 in modo che il browser possa caricarlo il più rapidamente possibile.

pix_fmt - I video MP4 memorizzano i pixel in diversi formati. Includiamo questa opzione per specificare un formato specifico che abbia la massima compatibilità tra tutti i browser.

vf - I video MP4 che utilizzano H.264 devono avere dimensioni divisibili per 2. Questa opzione garantisce che sia così.

Fonte: http://rigor.com/blog/2015/12/optimizing-animated-gifs-with-html5-video


4
Grazie, questa è l'unica versione che ha funzionato per me su osx.
Pykler,

1
Questo ha funzionato per me su Ubuntu 16.10 con ffmpeg 3.0.2, dove la risposta migliore no
cat

1
Può anche ritagliare invece di ridimensionare (sostituisci scalecon crop), poiché taglierai solo al massimo 1 pixel. Il ridimensionamento potrebbe rendere le cose sfocate
Jezzamon

Questo ha interrotto gli ultimi secondi per me. Il risultato mp4 è terminato presto.
callum,

38

Nel mio caso, usare ffmpegdirettamente ha fatto il trucco e ha fornito il miglior risultato:

$ ffmpeg -f gif -i infile.gif outfile.mp4

2
prodotto un video vuoto (corrotto) su os x
Pykler

2
@Pykler dovresti probabilmente aumentare la verbosità e / o controllare il file di registro per capire cosa sta succedendo.
BenC,

Anche io, probabilmente il "divisibile per 2 dimensioni" suggerito nella risposta di Vico Vault. (che ha funzionato per me)
lapo,

Questo metodo ha funzionato perfettamente per me. (La risposta migliore ha causato la fine di 3 secondi.) MODIFICA: oh ma non funziona su iOS :(
callum

Una pagina web dice che dovresti solo aggiungere -pix_fmt yuv420p
beefeather

2

Un altro modo per convertire l'animazione GIF in video:

ffmpeg -i your_gif.gif -c:v libvpx -crf 12 -b:v 500K output.mp4

i valori -crf possono andare da 4 a 63. Valori più bassi significano una migliore qualità. -b: v è il bitrate massimo consentito. Più alto significa migliore qualità.


2

Se vuoi fare l'output in "n loop" , guarda questa soluzione in un colpo solo

Quindi, convertiamo un normal.gif in loop.mp4

per esempio film 2 loop:

ffmpeg -stream_loop 2 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y

per esempio di film a 5 loop:

ffmpeg -stream_loop 5 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y

ATTENZIONE: c'è un -y [per la sovrascrittura]


Se esegui il primo ffmpegcomando senza -y , avrai molte meno possibilità di sovrascrivere accidentalmente qualcosa che non vuoi. ( Probabilmente c'è anche un modo per ffmpegreindirizzare il video su se stesso e farlo in un comando con pipe senza il file intermedio e la sovrascrittura.)
FeRD

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.