OGVビデオをGIFアニメーションに変換しますか?


40

gtk-recordmydesktopスクリーンキャスティングプログラムでOGVビデオを作成し、X上のブルートフォースでこの問題に取り組みました。VLCでビデオを見ることができます。

ここでのタスクは、OGVビデオをGIFアニメーションに変換してSEで表示できるようにする方法を見つけることです。どうやってやるの?

回答:


38

これを見てくださいhttps : //askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast/107735#107735

..... デスクトップレコーダーが記録をOGVビデオに保存した後、MPlayerを使用してJPEGスクリーンショットをキャプチャし、「出力」ディレクトリに保存します。

ターミナルで:

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

使用ImageMagickのアニメーションGIFをにスクリーンショットを変換します。

convert output/* output.gif

この方法でスクリーンショットを最適化できます。

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

1
多数の画像の場合、-limit map 1変換するために追加する必要がありました(それ以外の場合は "Killed"になりました)。
Ax3l 14

30秒のogvビデオで、convertコマンドはすべてのCPUを使用し、停止するまで10分以上かかりました。-limit map 1コマンドに追加しても修正されませんでした。
マックスプレナー

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

ダイレクトconvert output/* -fuzz 10% -layers Optimize optimised.gifも可能であり、2つのコマンドパスよりも著しく高速であることは言及されています。また、スクリーンショットもmplayer簡単に作成pngできます。これは、WebサイトまたはGUIのキャプチャに適している場合があります。
ラファエル

21

質の良いシンプルなスクリプト

スクリプト:

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

コード:https : //superuser.com/a/556031/295664

パレットなし:(231 KB)

ここに画像の説明を入力してください

パレット:(573キロバイト)

ここに画像の説明を入力してください


4

このワンライナーは私のために働いています:

ffmpeg -i video.ogv video.gif

2
これは、使用する既存の回答と本質的に異なりますffmpegか?どうやって?
ilkkachu

1
@ilkkachu私は、非常にすばやく、簡単で、覚えやすいソリューションを探していました。他の答えははるかに複雑で、一見して理解するのはそれほど簡単ではありません(ただし、おそらくより高品質の結果が得られます)。
ルエーター

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ではなくPNGに変換することをお勧めしますが、再圧縮によるアーティファクトは減少します。
ideasman42
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.