OGV video GIF animasyon dönüştürmek?


40

Screencasting gtk-recordmydesktopprogramı ile OGV videoları hazırladım , burada X üzerinde bruteforce ile bu problemi çözmeye çalışıyorum . VLC ile videoları izleyebiliyorum.

Şimdi, görev OGV videolarını GIF animasyonlarına dönüştürmenin bir yolunu bulmak, böylece SE'de görüntüleyebiliyorum. Bunu nasıl yapabilirim?

Yanıtlar:


38

şuna bir göz atın: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast/107735#107735

..... Masaüstü Kaydedici , kaydı bir OGV videoya kaydettikten sonra , MPlayer JPEG ekran görüntülerini yakalamak için 'çıktı' dizinine kaydetmek için kullanılır .

Bir terminalde:

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

Ekran görüntülerini animasyonlu giflere dönüştürmek için ImageMagick'i kullanın .

convert output/* output.gif

ekran görüntülerini şu şekilde optimize edebilirsiniz:

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

1
Çok sayıda resim için, -limit map 1dönüştürmeyi eklemek zorunda kaldım (aksi halde "Killed" aldım).
Ax3l

30 saniyelik bir ogv videosu ile convert komutu tüm cpularımı aldı ve durmadan önce 10 dakikadan fazla sürdü. -limit map 1komuta eklemek onu çözmedi.
Maksimum pleaner

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

Direktin convert output/* -fuzz 10% -layers Optimize optimised.gifde mümkün olduğunu ve iki komut yolundan belirgin şekilde daha hızlı olduğunu belirtmektedir . Ayrıca, web sitelerinin veya GUI'lerin yakalanması için tercih edilebilecek olan ekran görüntülerini de mplayerkolayca oluşturur png.
Raphael

21

İyi kalitede basit senaryo

Senaryo:

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

Kod: https://superuser.com/a/556031/295664

Olmadan palet (231 KB)

görüntü tanımını buraya girin

İle paleti: (573 KB)

görüntü tanımını buraya girin


4

Bu bir astar benim için çalışıyor:

ffmpeg -i video.ogv video.gif

2
Bu esas olarak kullanılan mevcut cevaplardan farklı mıdır ffmpeg? Nasıl?
ilkkachu

1
@ilkkachu Çok hızlı, basit ve hatırlaması kolay bir çözüm arıyordum. Diğer cevaplar çok daha karmaşıktır ve ilk bakışta anlaşılması o kadar kolay değildir (muhtemelen daha kaliteli sonuçlarla sonuçlanır).
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
JPEG’e değil PNG’ye dönüştürme önerisi daha büyük, ancak yeniden sıkıştırma yapılarını azaltır.
ideasman42
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.