2010-07-09 33 views
24

Có cách nào để chuyển đổi gif động sang định dạng video (ví dụ: .avi) trên Linux không?Ghf hoạt ảnh cho avi trên linux

Tôi đã cố gắng

ffmpeg -i thegif.gif thevideo.avi 

nhưng tất cả tôi nhận được là hình ảnh đầu tiên của video.

+0

ffmpeg -i foo.gif foo.mkv làm việc với ffmpeg hiện tại, và thậm chí hoạt động đúng với gifs biến tốc độ khung hình hoạt hình . Với đầu ra mkv, bạn nhận được một tỷ lệ khung hình biến đổi mkv. Với đầu ra mp4, nó tăng lên fps cao khi cần thiết, và sau đó nhân đôi khung khi cần thiết để hiển thị mọi thứ khi thích hợp. ví dụ. một gif với một số 25fps và một số 10 fps thực hiện một 50fps mp4, với 2x dups và 5x dup khung phụ thuộc vào phần nào. Lưu trữ các khung trùng lặp không chiếm nhiều không gian, IDK nếu chúng nằm trong luồng h.264 hoặc chỉ chứa mp4. –

Trả lời

12

Tôi có thể đề nghị kết hợp của ImageMagick và ffmpeg

làm điều này để trích xuất từng khung hình như png/jpeg

$magick> convert 'images.gif[0]' image.png 

Đừng này để chuyển đổi hình ảnh vào chuỗi phim

ffmpeg -f image2 -i image%d.jpg video.mpg 

Giúp đỡ thêm trên các lệnh

http://www.imagemagick.org/script/command-line-processing.php

http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs

http://electron.mit.edu/~gsteele/ffmpeg/

+7

Nếu gif của bạn có transperance bạn phải thêm -coalesce như thế này: convert -coalesce download.gif một số% 05d.png –

+0

-1, bởi vì lệnh đầu tiên của bạn không hoạt động. Nhưng lệnh của NordicMainframe hoạt động. – erik

+1

Điều này sẽ mất thông tin về tốc độ khung hình từ gif đầu vào. hiện tại ffmpeg bây giờ xử lý đầu vào gif động trực tiếp. –

43

đầu vào gif ffmpeg của không làm việc quá tốt. Nó thường dễ dàng hơn để giải nén các khung gif với chuyển đổi (từ ImageMagick) và xử lý những việc này với ffmpeg:

convert some.gif some%05d.png 
ffmpeg -i some%05d.png some.avi 
rm some*.png 
+0

Cảm ơn tôi đã tìm kiếm dòng lệnh đầu tiên của bạn: 'convert some.gif một số% 05d.png' – Dorian

+3

Nếu một số khung bị hỏng vì chúng chỉ hiển thị sự khác biệt với khung cơ sở, hãy sử dụng tùy chọn' -coalesce' để 'chuyển đổi'. – Hnatt

+0

khi sử dụng '-coalesce', bạn có thể cần phải xóa frame đầu tiên vì nó không có định dạng giống với những người khác (' PseudoClass' thay vì 'DirectClass'). Nó có thể tồn tại một phương pháp để chuyển đổi nó ... – xiawi

9

Nếu bạn muốn có một khung hình nào đó như là đầu vào do video kết quả là nhanh hay chậm

ffmpeg -r 'xx' -i some%05d.png some.avi 

trong đó xx là tốc độ khung hình đầu vào.

0

Nếu bạn muốn có một vòng lặp như sản lượng

ffmpeg -loop 1 -t x -i some%05d.png some.avi 

trong đó x là thời điểm video nên chạy chỉ trong vài giây.

Source

0

Nếu bạn không muốn tập tin tạm thời, bạn có thể thử mencoder:

mencoder myfile.gif -mf fps=25 -o myfile.avi -ovc lavc -lavcopts vcodec=mpeg4 
Các vấn đề liên quan