Ffmpeg / avconv के साथ WebM में वीडियो परिवर्तित करना


18

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

मैंने रूपांतरण का उपयोग करने की भी कोशिश की avconvताकि मैं इसे स्क्रिप्ट कर सकूं, लेकिन परिणामी फ़ाइल वास्तव में भद्दा लग रहा है। पित्ती में प्रतिपादन सेटिंग्स को देखने के बाद मैंने कुछ मापदंडों की कोशिश की: avconv -i $1 -q 5 -qmin 0 -qmax 63 ${1%.*}.webmलेकिन गुणवत्ता अभी भी बकवास की तरह दिखती है, इसलिए ऐसा लगता है कि मैं कुछ गलत पैरामीटर्स का उपयोग कर रहा हूं / गायब हूं। क्या किसी को पता है कि h264 फिल्म को वेब में बदलने और पित्ती से समान गुणवत्ता प्राप्त करने के लिए उपयोग करने के लिए कौन से सही पैरामीटर हैं?

पितिवी में ये सेटिंग्स हैं: पित्ती परियोजना का निर्माण वेबम के लिए प्रतिपादन (html5 वीडियो) कोडेक कॉन्फ़िगरेशन

जवाबों:


53

नोट: यह जानकारी VP9 एन्कोडिंग पर FFmpeg Wiki पर आधारित है । कृपया अधिक जानकारी के लिए उस लेख को देखें - यह निरंतर बनाए रखा जाएगा और बढ़ाया जाएगा। सर्वोत्तम परिणामों के लिए आपको उनकी वेबसाइट से इसे डाउनलोडffmpeg करके हाल के संस्करण का उपयोग करना चाहिए (एक स्थैतिक निर्माण पर्याप्त होगा; इसमें एनकोडर होता है )।libvps-vp9

परिवर्तनीय बिट दर

VBR एन्कोडिंग आपको इष्टतम समग्र गुणवत्ता प्रदान करती है, क्योंकि एनकोडर स्वतंत्र रूप से एक फ्रेम में कितने बिट्स असाइन कर सकता है। जब तक आप निरंतर-बिटरेट स्ट्रीमिंग के लिए वीडियो तैयार नहीं कर रहे हैं तब तक इस मोड को चुनें।

विकल्प 1: लगातार गुणवत्ता एन्कोडिंग

आमतौर पर, यदि आप किसी विशिष्ट फ़ाइल आकार को लक्षित नहीं करना चाहते हैं, तो आपको बिटरेट को स्वतंत्र रूप से भिन्न होने देना चाहिए, क्योंकि इससे उच्चतम गुणवत्ता प्राप्त होगी। आप इसे बिटरेट को 0 और स्थिर दर कारक ( CRF ) को लक्ष्य गुणवत्ता स्तर पर सेट करके कर सकते हैं :

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm

CRF मान 0–63 से हो सकता है। कम मूल्यों का मतलब बेहतर गुणवत्ता है। अनुशंसित मूल्य १५-३५ से लेकर, ३१ from एचडी वीडियो के लिए अनुशंसित है। Google के पास इस बारे में अधिक जानकारी के लिए एक गाइड है

विकल्प 2: लक्ष्य बिटरेट के साथ दो-पास एन्कोडिंग

यदि आप चाहते हैं कि आपकी फ़ाइल एक विशिष्ट लक्ष्य बिटरेट या फ़ाइल आकार हो, तो आपको दर निर्दिष्ट करने और दो-पास एन्कोडिंग (जो एक इष्टतम गुणवत्ता वितरण सुनिश्चित करेगा) का उपयोग करने की आवश्यकता है। यहां हम 5 एमबीटी / एस चुन रहे हैं, जो 1080p सामग्री के लिए पर्याप्त होना चाहिए।

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 1 -f webm /dev/null && \
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 2 output.webm

विंडोज उपयोगकर्ताओं के उपयोग करने की आवश्यकता NULके बजाय /dev/nullऔर एक, ^के बजाय \

स्थिर बिट दर

सबसे पहले, libvpx निरंतर बिटरेट और चर बिटरेट एन्कोडिंग मोड प्रदान करता है । जब भी संभव हो तब तक लगातार बिटरेट से बचा जाना चाहिए (जब तक कि आप किसी विशिष्ट फ़ाइल आकार या स्ट्रीमिंग परिदृश्य को लक्षित न करें), क्योंकि प्रति फ़ाइल आकार औसत गुणवत्ता बदतर होगी। फिर भी, आप एक निरंतर बिटरेट सेट करने की कोशिश कर सकते हैं यदि आपके लिए कुछ और काम नहीं करता है, जैसे 1 MBit / s:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 5M -maxrate 5M -b:v 5M output.webm

आउटपुट को देखें और अपनी पसंद (या फ़ाइल आकार की कमी) के लिए बिट दर को बढ़ाएं या घटाएं। उदाहरण के लिए, आप उपयोग कर सकते हैं 500Kया 5M, एट वगैरह।

आपको यह निर्दिष्ट करना -minrate, -maxrateऔर बिटरेट -b:vएनकोडर के लिए क्रम में सीबीआर उपयोग करने के लिए। इन सभी का एक ही मूल्य है-अन्यथा यह एक अलग लक्ष्य बिटरेट का चयन करेगा और VBR एन्कोडिंग करेगा, लेकिन खराब गुणवत्ता के साथ।

ऑडियो

VP9 एन्कोडिंग के लिए पसंद का वर्तमान ऑडियो कोडेक ओपस है। FFmpeg डिफ़ॉल्ट रूप से आवश्यक एनकोडर और इसके विकल्पों का चयन करेगा। यदि आप स्पष्ट रूप से सेट करना चाहते हैं -c:a libopus, तो आप ऐसा भी कर सकते हैं। अधिक विकल्पों के लिए libopusप्रलेखन देखें ।


4
यह वर्तमान में, पूरे इंटरनेट पर VP8 को एन्कोडिंग करने के लिए एकल सर्वश्रेष्ठ मार्गदर्शिका है। अच्छा किया, काश मैं एक बार और अधिक उत्थान कर पाता!
19

@evilsoup धन्यवाद। मैं अभी भी इसे ट्विक कर रहा हूं और बाद में एफएफएमपी विकी पर एक नया पेज जोड़ूंगा।
19

यह वास्तव में एक अद्भुत जवाब है! मुझे अब समझ में आया कि मेरा वीडियो हमेशा समान गुणवत्ता में क्यों था, क्योंकि मैं वास्तव में हमेशा 256 kBit / s के डिफ़ॉल्ट का उपयोग कर रहा था। आपका बहुत बहुत धन्यवाद!
जीरो फेन

मूल mp4 और रूपांतरित वेब के बीच आकार के अंतर क्या थे?
स्वित्ज़

1
@ क्या मैंने सिर्फ गाइड को अपडेट किया - देखा कि यह थोड़ा पुराना था। खुशी हुई कि यह आपको उपयोगी लगा।
स्लैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.