2011-05-21 11 views
44

मैं निम्न आदेश का उपयोग कर एक एनिमेटेड GIF में एक वीडियो का एक हिस्सा निकालने के लिए कोशिश कर रहा हूँ:ffmpeg का उपयोग कर एवी से gif कैसे उत्पन्न करें?

ffmpeg -i video.avi -t 5 out.gif 

यह एक एनिमेटेड GIF उत्पन्न करता है, लेकिन गुणवत्ता पागल है। लेकिन जब मैं gif छवि का उपयोग कर उत्पन्न:

ffmpeg -i video.avi -t 10 out%d.gif

यह gif छवियों का स्वीकार्य गुणवत्ता उत्पन्न करता है। मैं पहले कमांड का उपयोग करके एनिमेटेड gif कैसे उत्पन्न कर सकता हूं लेकिन दूसरी कमांड के समान गुणवत्ता?

+2

यह आसान हो सकता है http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html –

उत्तर

0

मैंने पहले एनिमेटेड जीआईएफ नहीं बनाया है, लेकिन आप छवि निर्दिष्ट करने के बावजूद गुणवत्ता निर्दिष्ट करने के लिए बिट-रेट पैरामीटर का उपयोग करने का प्रयास कर सकते हैं (और संभवतः कोई दर नहीं है)। थंबनेल गुणवत्ता -बी पैरामीटर को प्रतिक्रिया देता है। यदि पागल हो, तो आपका मतलब है, "बेहद खराब," आप एक बहुत ही उच्च बिटरेट और बिटरेट सहनशीलता निर्दिष्ट कर सकते हैं (सुनिश्चित नहीं है कि आप वीब्र या सीआरआर स्रोत का उपयोग कर रहे हैं)। वैकल्पिक रूप से (या विपरीत यदि आप मतलब है कि यह बहुत अच्छा है और आप आकार को सीमित करना चाहते हैं)

'-b', '10000000','-bt', '20000000'

, आप भी -s पैरामीटर, जिनमें से एक साधारण देख प्रतिनिधित्व ले जाएगा का उपयोग कर आयाम को बदल सकता है "1920X1200" जैसे आयाम।

यह वास्तव में आपके स्रोत सामग्री के बिटरेट और संपीड़न पर निर्भर करता है और आप उम्मीद करते हैं कि जीआईएफ कैसा होगा। शायद "पागल" से अधिक जानकारी प्रदान करने पर विचार करें, लेकिन मुझे लगता है कि यह आपको किसी भी तरह से एक अच्छी शुरुआत देगा। शुभकामनाएं

+2

आपके उत्तर के लिए धन्यवाद। हालांकि मुझे पता चला कि ffmpeg gif छवियों को संभालने में वास्तव में अच्छा नहीं है इसलिए मैंने इसे छवियों को निकालने के लिए उपयोग किया लेकिन फिर gif उत्पन्न करने के लिए imagemagick का उपयोग करें। – Marconi

+0

यकीन नहीं है कि मुझे यहां बहुत सारे डाउनवॉट क्यों मिल रहे हैं। मैंने सामने कहा कि मैंने एनिमेटेड gifs नहीं बनाया था। प्रश्न के साथ व्यक्ति को अन्य प्रासंगिक मानकों पर इंगित करने की कोशिश कर रहा था। पुरानी एफएफएमपीईजी प्रोजेक्ट डॉक्स के बाहर अपने कई पैरामीटर छिपाने में महिमा लग रहा था। हो सकता है कि मैं अपने भयानक, अंधेरे रहस्यों को प्रकट करने के लिए नीचे उतर रहा हूं? – Profane

61

मुझे एक ऐसी फिल्म थी जो मूवी से निकाली गई छवियों की एक श्रृंखला से उच्च गुणवत्ता वाले एनिमेटेड gif उत्पन्न करने की कोशिश कर रही थी।

कुछ कारणों से ffmpeg के साथ उत्पन्न एनिमेटेड gif में केवल एक निश्चित 256 स्तर सिस्टम रंग पैलेट का उपयोग करके 103 रंगों का अनुमान लगाया जाता है जिसके परिणामस्वरूप भयानक परिणाम होता है। मेरे समाधान के बजाय

ffmpeg -i video.avi -t 10 out%02d.gif 

था तो

gifsicle --delay=10 --loop *.gif > anim.gif 

गुणवत्ता की तो काफी अच्छा है। आप gifsicle here

संपादित करें: एलेक्स कान के सुझावों को दर्शाने के लिए पोस्ट को अपडेट किया गया।

+7

धन्यवाद! एक अनुशासन:% 02d.gif का उपयोग करें। यह फ़ाइल नाम में संख्या को पैड करता है ताकि वे उचित वर्णमाला क्रम में हों। अन्यथा आदेश 1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23 हो रहा है ... जिसके परिणामस्वरूप gif एक अजीब छोड़ने का प्रभाव देता है। –

+2

क्रैपी गुणवत्ता से बचने के लिए आप जीआईएफ के बजाय 'ffmpeg' आउटपुट पीएनजी भी प्राप्त कर सकते हैं। एफडब्ल्यूआईडब्ल्यू, यहां बैश में जीआईएफएस बनाने पर एक अच्छा लेखन है: http://blog.room208.org/post/48793543478 –

+1

यह बहुत अच्छा काम करता है। एक चीज जिसे आप करना चाहते हैं, फ्रेम को छोड़ना है: 'seq -f% 02g का उपयोग करना।gifsicle कमांड में '* .gif' के बजाय gif start skip stop ', आप' skip' फ्रेम को 'स्टार्ट' से शुरू कर सकते हैं और 'स्टॉप' फ्रेम पर समाप्त कर सकते हैं। बहुत उपयोगी उदाहरण के लिए: gifsicle --delay = 10 --loop '% -f seq 02g.gif 1 से 3 156'> anim.gif फ्रेम 1 पर शुरू होगा, 3 फ्रेम छोड़ सकते हैं और में फ्रेम 156 – funkaster

संबंधित मुद्दे