Chuyển đổi video OGV sang hoạt hình GIF?


40

Tôi đã tạo các video OGV bằng gtk-recordmydesktopchương trình ghi hình, cố gắng giải quyết vấn đề này ở đây với bruteforce trên X. Tôi có thể xem các video bằng VLC.

Bây giờ, nhiệm vụ là tìm một số cách để chuyển đổi video OGV thành hình động GIF để tôi có thể hiển thị chúng trên SE. Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


38

hãy xem cái này: https://askubfox.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast/107735#107735

..... Sau khi Trình ghi màn hình nền đã lưu bản ghi vào video OGV , MPlayer sẽ được sử dụng để chụp ảnh chụp màn hình JPEG , lưu chúng vào thư mục 'đầu ra' .

Trên thiết bị đầu cuối:

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

Sử dụng ImageMagick để chuyển đổi ảnh chụp màn hình thành ảnh gif hoạt hình.

convert output/* output.gif

bạn có thể tối ưu hóa các ảnh chụp màn hình theo cách này:

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

1
Đối với một số lượng lớn hình ảnh, tôi đã phải thêm -limit map 1để chuyển đổi (có "Bị giết" nếu không).
Ax3l

Với video ogv 30 giây, lệnh convert đã lấy hết cpu của tôi và sẽ kéo dài hơn 10 phút trước khi tôi dừng nó. thêm -limit map 1vào lệnh đã không sửa nó.
tối đa pleaner

1
Hãy thử điều này để chuyển đổi ffmpeg -i output/00000%03d.jpg output.gif unix.stackexchange.com/questions/24014/iêu
Dawid Drozd

Nó đề cập rằng trực tiếp convert output/* -fuzz 10% -layers Optimize optimised.giflà có thể là tốt, và nhanh hơn đáng kể so với đường dẫn hai lệnh. Ngoài ra, cũng mplayerdễ dàng tạo pngảnh chụp màn hình, có thể được ưu tiên để chụp các trang web hoặc GUI.
Raphael

21

Kịch bản đơn giản với chất lượng tốt

Kịch bản:

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

Mã từ: https://superuser.com/a/556031/295664

Không có bảng màu: (231 KB)

nhập mô tả hình ảnh ở đây

Với bảng màu: (573 KB)

nhập mô tả hình ảnh ở đây


4

Điều này một lót đang làm việc cho tôi:

ffmpeg -i video.ogv video.gif

2
Đây có phải là cơ bản khác với các câu trả lời hiện có sử dụng ffmpeg? Làm sao?
ilkkachu

1
@ilkkachu Tôi đang tìm kiếm một giải pháp rất nhanh chóng, đơn giản và dễ nhớ. Các câu trả lời khác phức tạp hơn nhiều và không dễ hiểu ngay từ cái nhìn đầu tiên (mặc dù có thể dẫn đến kết quả chất lượng cao hơn).
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
Đề xuất chuyển đổi sang PNG, không phải JPEG, lớn hơn nhưng giảm các thành phần nén lại.
ideaman42
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.