एक उच्च गुणवत्ता वाले वीडियो को बंद करने के लिए ffmpeg का उपयोग करना [बंद]


92

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

मूल आदेश यह है:

ffmpeg -r 25 -i %4d.png myvideo.mpg

और मैंने टकसाल की कोशिश की और झंडे को अधिकतम किया। {Mpg, avi, mov, flv} स्वरूपों में से कोई भी करेगा।

सेटिंग्स के लिए कोई सुझाव? अंतिम फ़ाइल का आकार कोई समस्या नहीं है।


7
अपने मैक पर, मैं निम्नलिखित कमांड का उपयोग करता हूं ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4:। मैंने पाया कि फ्रैमर्ट को मजबूर करने के लिए, मुझे इसे इनपुट और आउटपुट दोनों फाइलों के लिए निर्दिष्ट करना होगा। यह कोडेक मेरे लिए काम करता है - आपको इसे निर्दिष्ट करने की आवश्यकता नहीं हो सकती है। मैं सिर्फ यह शामिल करना चाहता था कि मैंने क्या किया क्योंकि मैंने इस पर काम करने में बहुत समय बिताया है। केवल नकारात्मक पक्ष यह है कि मेरी इनपुट छवियां उच्च-विपरीत (एक सफेद पृष्ठभूमि के खिलाफ नीले और लाल रंग की गेंदें) हैं और बाद में फिल्म में, गेंदें सभी एक ही गहरे रंग की हो जाती हैं - एक अवांछित विपरीत प्रभाव।
jvriesem

धन्यवाद @jvriesem! यह मेरे लिए बहुत अच्छा काम किया।
डैन लोवेनहेर्ज़


c ++ संस्करण stackoverflow.com/a/43464269/6180077 FFMPEG c ++ mp4 प्रारूप स्क्रीन रिकॉर्डर एप्लिकेशन को काम करने के लिए इस लिंक पर जाएँ।
अब्दुल्ला फ़ार्वेज़

इस लिंक की जाँच करें जो
एफएफएमपीजी लिबास का

जवाबों:


64

कुछ चीजें:

  • आपको वीडियो बिटरेट सेट करने की आवश्यकता है। मैंने कभी भी मिंट्रेट का उपयोग नहीं किया है और इसे अधिकतम नहीं किया है, इसलिए मुझे नहीं पता कि वे कैसे काम करते हैं, लेकिन -bस्विच का उपयोग करके बिटरेट सेट करके , मैं उच्च गुणवत्ता वाला वीडियो प्राप्त करने में सक्षम हूं। आपको एक बिटरेट के साथ आने की जरूरत है जो संपीड़न और वीडियो की गुणवत्ता के बीच एक अच्छा व्यापार प्रदान करता है। आपको इसके साथ प्रयोग करना पड़ सकता है क्योंकि यह सब आपके वीडियो की सामग्री में फ्रेम आकार, फ्रेम दर और गति की मात्रा पर निर्भर करता है। ध्यान रखें कि डीवीडी 720x480 के लिए औसतन 4-5 Mbit / s के आसपास होता है, इसलिए मैं आमतौर पर वहां से शुरू करता हूं और तय करता हूं कि मुझे अधिक या कम की आवश्यकता है और फिर प्रयोग करें। उदाहरण के लिए, आप -b 5000kकम या ज्यादा डीवीडी वीडियो बिटरेट प्राप्त करने के लिए कमांड लाइन में जोड़ सकते हैं ।

  • आपको एक वीडियो कोडेक निर्दिष्ट करने की आवश्यकता है। यदि आप नहीं करते हैं, तो ffmpeg MPEG-1 के लिए डिफ़ॉल्ट होगा जो काफी पुराना है और MPEG-4 या H.264 के रूप में संपीड़न की मात्रा के पास प्रदान नहीं करता है। यदि आपका ffmpeg संस्करण libx264 समर्थन के साथ बनाया गया है, तो आप -vcodec libx264कमांड लाइन के भाग के रूप में निर्दिष्ट कर सकते हैं । अन्यथा -vcodec mpeg4एमपीईजी -1 की तुलना में बेहतर काम भी करेगा, लेकिन साथ ही साथ x264 भी नहीं।

  • बहुत सारे अन्य उन्नत विकल्प हैं जो आपको सबसे कम गुणवत्ता वाले बिट्रेट पर निचोड़ने में मदद करेंगे। एक नजर डालें यहाँ कुछ उदाहरण के लिए।


6
लगातार बिटरेट गुणवत्ता के लिए खराब है। निरंतर दर कारक का उपयोग करना बेहतर है (यह ऑपरेशन के x264 मोड में से एक है)। उदाहरण के लिए ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …:। 18 बहुत सीमांत गुणवत्ता के नुकसान के साथ सीआरएफ है, लेकिन बिटरेट शायद कम होगा। और यदि आप छोटे फ़ाइल आकार की आवश्यकता है, तो आप बड़े CRF मान आज़मा सकते हैं। और जैसा कि आप देख रहे हैं, यह बहुत सरल है।
प्रदर्शन का नाम

ध्यान दें कि -b को वीडियो से पहले होना चाहिए लेकिन इनपुट के बाद -i
mateuszb

45

आपको वीडियो बिटरेट को बढ़ाने के लिए -vb विकल्प को निर्दिष्ट करने की आवश्यकता है, अन्यथा आपको डिफ़ॉल्ट मिलता है जो छोटे वीडियो बनाता है लेकिन अधिक कलाकृतियों के साथ।

कुछ इस तरह की कोशिश करो:

ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg


1
यह मेरे लिए ठीक काम है, धन्यवाद;)
thiago.adriano26

15

सुनिश्चित करें कि वीडियो बनाने से पहले PNG पूरी तरह से अपारदर्शी हैं

इमेजमैजिक के साथ, उन्हें एक काले रंग की पृष्ठभूमि दें:

convert 0.png -background black -flatten +matte 0_opaque.png

मेरे परीक्षण से, कोई बिटरेट या कोडेक वीडियो को अच्छा दिखाने के लिए पर्याप्त नहीं है यदि आप पारदर्शिता के साथ ffmpeg PNGs फ़ीड करते हैं


इससे मेरे लिए समस्या हल हो गई।
Mat --j Kripner

0

जब तक आप किसी तरह का पोस्ट-प्रोसेसिंग कार्य नहीं करते हैं, वीडियो मूल फ्रेम से बेहतर कभी नहीं होगा। इसके अलावा एक फ्लिप-बुक की तरह, यदि आपके पास keyframes के बीच एक बड़ा "कूद" है तो यह मज़ेदार लगेगा। आपको आम तौर पर चिकनी एनीमेशन देने के लिए keyframes के बीच में पर्याप्त "tweens" की आवश्यकता होती है। HTH


चित्र मूल रूप से एक वीडियो अनुक्रम से हैं। उनके पास बस थोड़ा सा क्रॉपिंग, स्केलिंग और इमेजनॉटिक के साथ किया गया है। प्रभाव निश्चित रूप से संपीड़न कलाकृतियों हैं। मैंने अब इस पोस्ट को देखा है, जिसका उत्तर है: stackoverflow.com/questions/3158235/…
CakeMaster

@CakeMaster मैंने हानिपूर्ण संपीड़न का उल्लेख नहीं किया क्योंकि आपके पास आपके उदाहरण में ".png" चित्र हैं। .Png की हानि हो सकती है, लेकिन मुझे लगता है कि वे आमतौर पर नहीं हैं। .jpg का उपयोग करते समय कलाकृतियों के लगभग हमेशा हानिपूर्ण होते हैं। यदि आप कर सकते हैं, तो आप अपने .png के दोषरहित संपीड़न के साथ फिर से शुरू कर सकते हैं।
23
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.