2010-07-09 25 views
24

क्या एनिमेटेड gif को वीडियो प्रारूप में प्रारूपित करने का कोई तरीका है (उदा। .avi) लिनक्स पर?लिनक्स पर एवीआई एनिमेटेड gif

मैं पहले से ही

ffmpeg -i thegif.gif thevideo.avi 

की कोशिश की है, लेकिन सभी मैं वीडियो की पहली छवि है।

+0

ffmpeg मैं foo.gif foo.mkv वर्तमान ffmpeg के साथ काम करता है, और यहां तक ​​कि सही चर फ़्रेमरेट एनिमेटेड gifs के साथ काम करता । एमकेवी आउटपुट के साथ, आपको एक परिवर्तनीय फ्रेम दर एमकेवी मिलती है। एमपी 4 आउटपुट के साथ, यह आवश्यकतानुसार एफपीएस को जितना ऊंचा हो जाता है, और तब उपयुक्त होने पर चीजों को प्रदर्शित करने के लिए आवश्यक रूप से फ्रेम को डुप्लिकेट करता है। जैसे कुछ 25fps के साथ एक gif और कुछ 10 एफपीएस ने 50fps mp4 बनाया, जिसमें 2x डुप्लिक और 5x डुप्लिक फ्रेम हैं, जो कि किस भाग पर निर्भर करता है। डुप्लिकेट फ़्रेम को संग्रहीत करने में बहुत अधिक जगह नहीं होती है, आईडीके अगर वे h.264 स्ट्रीम या बस mp4 कंटेनर में हैं। –

उत्तर

12

मैं ImageMagick और ffmpeg

का संयोजन कर सकते हैं सुझाव इस PNG के रूप में प्रत्येक फ्रेम निकालने के लिए करते हैं/jpeg

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

है इस फिल्म के अनुक्रम के लिए छवियों को परिवर्तित करने के लिए

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

अधिक मदद आदेश पर

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

यदि आपके gif में ट्रांसपरेंस है तो आपको इस तरह को जोड़ना होगा: convert -coalesce download.gif कुछ% 05d.png –

+0

-1, क्योंकि आपका पहला आदेश काम नहीं करता है। लेकिन नॉर्डिकमेनफ्रेम का आदेश काम करता है। – erik

+1

यह इनपुट gif से फ्रेम दर जानकारी खो देता है। वर्तमान ffmpeg अब एनिमेटेड gif इनपुट सीधे संभालती है। –

43

ffmpeg के gif इनपुट बहुत अच्छी तरह से काम नहीं करता। यह आमतौर पर परिवर्तित (ImageMagick से) के साथ gif फ्रेम खोल और ffmpeg के साथ इन पर कार्रवाई करने के आसान है:

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

धन्यवाद मैं आपकी पहली कमांड लाइन खोज रहा था: 'कुछ.gif कुछ% 05d.png' – Dorian

+3

कनवर्ट करें यदि कुछ फ्रेम टूटे हुए हैं क्योंकि वे केवल बेस फ्रेम के साथ अंतर दिखाते हैं, तो' कनवर्ट 'के लिए' -कोलेससे 'विकल्प का उपयोग करें। – Hnatt

+0

'-coalesce' का उपयोग करते समय आपको पहले फ्रेम को हटाने की आवश्यकता हो सकती है क्योंकि इसमें अन्य प्रारूप ('DirectClass' के बजाय' छद्म क्लास ') के समान प्रारूप नहीं है। यह इसे बदलने के लिए एक विधि मौजूद हो सकता है ... – xiawi

9

आप क्योंकि परिणामस्वरूप वीडियो तेजी से करने के लिए या

धीमा करने के लिए है इनपुट के रूप में एक निश्चित फ़्रेमदर के लिए पसंद करते हैं
ffmpeg -r 'xx' -i some%05d.png some.avi 

जहां xx इनपुट फ़्रेमेट है।

0

आप उत्पादन

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

जहां x समय वीडियो सेकंड में चलाना चाहिए है के रूप में एक पाश के लिए पसंद करते हैं।

Source

0

आप अस्थायी फ़ाइलों को चाहते हैं, तो आप mencoder कोशिश कर सकते हैं:

mencoder myfile.gif -mf fps=25 -o myfile.avi -ovc lavc -lavcopts vcodec=mpeg4 
संबंधित मुद्दे