OGV 비디오를 GIF 애니메이션으로 변환 하시겠습니까?


40

나는 함께 OGV 비디오를 만들어 gtk-recordmydesktop이 문제를 해결하기 위해 노력하고, 스크린 캐스트 프로그램 여기 VLC과 비디오를 볼 수 있습니다 X. I 이상 bruteforce과 함께.

이제 과제는 OGV 비디오를 GIF 애니메이션으로 변환하여 SE에 표시 할 수있는 몇 가지 방법을 찾는 것입니다. 어떻게해야합니까?

답변:


38

이것을보십시오 : https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast/107735#107735

..... Desktop Recorder 가 레코딩을 OGV 비디오에 저장 한 후 MPlayer 를 사용하여 JPEG 스크린 샷 을 캡처 하여 'output' 디렉토리에 저장합니다 .

터미널에서 :

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

30 초 ogv 비디오를 사용하여 convert 명령은 모든 CPU를 가져 와서 10 분 이상 동안 멈추었습니다. -limit map 1명령을 추가 해도 문제가 해결되지 않았습니다.
max pleaner

1
변환이 시도 ffmpeg -i output/00000%03d.jpg output.gif unix.stackexchange.com/questions/24014/...
DAWID 할 Drozd에게

직접적으로 convert output/* -fuzz 10% -layers Optimize optimised.gif도 가능하며 두 명령 경로보다 눈에 띄게 빠릅니다. 또한 웹 사이트 나 GUI를 캡처하는 데 선호되는 스크린 샷도 mplayer쉽게 png만들 수 있습니다.
Raphael

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 저는 매우 빠르고 간단하며 기억하기 쉬운 솔루션을 찾고있었습니다. 다른 답변은 훨씬 더 복잡하고 언뜻보기에는 이해하기 쉽지 않습니다 (아마도 더 높은 품질의 결과를 초래할 수 있습니다).
luator December

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.