Convertire i video OGV in animazioni GIF?


40

Ho creato OGV video con il gtk-recordmydesktopprogramma di screencasting, cercando di affrontare questo problema qui con bruteforce su X. posso visualizzare i video con VLC.

Ora, il compito è trovare alcuni modi per convertire i video OGV in animazioni GIF in modo da poterli visualizzare su SE. Come lo posso fare?

Risposte:


38

dai un'occhiata a questo: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast/107735#107735

..... Dopo che Desktop Recorder ha salvato la registrazione in un video OGV , MPlayer verrà utilizzato per acquisire schermate JPEG , salvandole nella directory "output" .

Su un terminale:

mplayer -ao null <video file name> -vo jpeg:outdir=output

Usa ImageMagick per convertire le schermate in gif animate.

convert output/* output.gif

puoi ottimizzare gli screenshot in questo modo:

convert output.gif -fuzz 10% -layers Optimize optimised.gif

1
Per un gran numero di immagini, ho dovuto aggiungere -limit map 1per convertire (ottenuto un "Killed" altrimenti).
Ax3l,

Con un video ogv di 30 secondi, il comando di conversione ha preso tutta la mia CPU e funzionava per oltre 10 minuti prima che lo fermassi. l'aggiunta -limit map 1al comando non lo ha risolto.
max pleaner

1
Prova questo per convertire ffmpeg -i output/00000%03d.jpg output.gif unix.stackexchange.com/questions/24014/…
Dawid Drozd

Ricorda che anche direct convert output/* -fuzz 10% -layers Optimize optimised.gifè possibile e notevolmente più veloce del percorso a due comandi. Inoltre, mplayercrea prontamente anche pngschermate, che possono essere preferite per le acquisizioni di siti Web o GUI.
Raffaello,

21

Script semplice con buona qualità

script:

inputFile=$1

FPS=15
WIDTH=320

#Generate palette for better quality
ffmpeg -i $inputFile -vf fps=$FPS,scale=$WIDTH:-1:flags=lanczos,palettegen tmp_palette.png

#Generate gif using palette
ffmpeg -i $inputFile -i tmp_palette.png -loop 0 -filter_complex "fps=$FPS,scale=$WIDTH:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

rm tmp_palette.png

Codice da: https://superuser.com/a/556031/295664

Senza tavolozza: (231 KB)

inserisci qui la descrizione dell'immagine

Con palette: (573 KB)

inserisci qui la descrizione dell'immagine


4

Questo one-liner funziona per me:

ffmpeg -i video.ogv video.gif

2
È sostanzialmente diverso dalle risposte esistenti che usano ffmpeg? Come?
ilkkachu,

1
@ilkkachu Stavo cercando una soluzione molto rapida, semplice e facile da ricordare. Le altre risposte sono molto più complicate e non così facili da capire a prima vista (probabilmente con risultati di qualità superiore).
Luator,

2
ifile=~/test.ogv

echo '# Determine input WxH and FPS' 
eval "$(ffmpeg -i "$ifile" 2>&1 |sed -nr 's/.*Stream.*Video.* ([0-9]+x[0-9]+),.*[^[0-9.]([0-9.]+).*tbr,.*/WxH=\1;FPS=\2/p')"

echo '# Output multiple images from the input video'
ffmpeg -i "$ifile" -r $FPS -s $WxH -f image2 -vframes 100 -y ~/test-%03d.jpg 2>/dev/null

echo '# use ImageMagic "convert" to generate the animated .gif' 
convert -delay 20 ~/test-[0-9][0-9][0-9].jpg  ~/test.gif 

echo '# remove temp image files'    
rm -f  ~/test-[0-9][0-9][0-9].jpg

echo 'Done!'

1
Suggerisci la conversione in formato PNG, non JPEG, più grande, ma riduce gli artefatti da ricompressione.
ideasman42
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.