वेब के लिए एक वीडियो के बिटरेट, -मैक्स्रेट और -bufsize पर कैसे विचार करें


13

मैं अपने वीडियो को वेब पर अपलोड करने के लिए एन्कोड करने के लिए ffmpeg का उपयोग कर रहा हूं। मैंने इस पोस्ट को ffmpeg का उपयोग करने के बारे में देखा , लेकिन मूल्यों पर विचार करने के तरीके के बारे में बहुत कुछ नहीं मिला।

मान लीजिए मेरे पास 4 मिनट की अवधि के साथ आकार 70 एमबी का एक वीडियो है। मैं इन झंडे के लिए मूल्य कैसे विचार किया जाएगा: -b:v, -maxrateऔर -bufsizeइस आदेश के लिए?

ffmpeg -i input -codec:v libx264 -profile:v main -preset slow -b:v ? -maxrate ? -bufsize ? -vf "scale=720:trunc(ow/a/2)*2" -threads 0 -codec:a libfdk_aac -movflags +faststart output

या क्या कोई सामान्य मूल्य है, जैसे कि crfमान 19-24 हैं? मैं वास्तव में आपकी मदद और मार्गदर्शन की सराहना करूंगा।


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

1
@ प्रियजन मैं सहमत हूं, वीडियो एन्कोडिंग एक कला है और 480 आमतौर पर काफी अच्छा है। हालाँकि, मुझे उच्च रिज़ॉल्यूशन उपलब्ध होना भी पसंद है क्योंकि मैं अब 640x480 पर सीआरटी का उपयोग नहीं करता हूं। यह निश्चित रूप से बिट्रेट के साथ फ़िडलिंग की तुलना में आकारों को कम करने का एक बेहतर तरीका है, लेकिन फिर से, मुझे विकल्प पसंद हैं।
व्याट8740

जवाबों:


21

यह वास्तव में आपके अपलोड की गति पर निर्भर करता है।

bufsizeयह निर्धारित करेगा कि धार्मिक ffmpeg आपके बिटरेट को स्थिर रखने के बारे में है। यदि आप FFmpeg Wiki केbufsize अनुसार 64k का सेट करते हैं, तो आउटपुट बिटरेट को सीमित करते हुए , यह हर 64 किलोबाइट पर अपनी वर्तमान बिटरेट की गणना करेगा और तदनुसार समायोजित करेगा। के लिए छोटे आकार bufsizeगुणवत्ता के लिए हानिकारक हो सकते हैं कि वे अचानक परिवर्तन करने के लिए x264 के लिए चेक के बीच पर्याप्त स्थान की अनुमति नहीं देते हैं - आपको ब्लॉकनेस मिलेगी।

यदि आपका maxrate640kbps है, और आपका bufsize64k है, तो दूसरे x264 का हर दसवां भाग जांच करेगा। यह उप-इष्टतम है - एफएफएमपी विकी: स्ट्रीमिंग साइटों के लिए एन्कोडिंग हर 1 से 2 सेकंड में इसे चलाने की सिफारिश करता है। यदि यह समझ में नहीं आता है, तो इसे maxrate/ bufsize= चेक की आवृत्ति के रूप में सोचें । इस आवृत्ति को 1 और 2 सेकंड के बीच अंगूठे के नियम के रूप में रखें।

यदि आप दोनों सेट करते हैं maxrateऔर bufsize, आपको चाहिए:

  • सेट maxrateजो कुछ भी करने के लिए अपने न्यूनतम अपलोड गति की संभावना होगी (में ffmpeg विकी उदाहरण , इस कुल अपलोड गति का 80% है, लेकिन आपका माइलेज भिन्न हो सकते हैं)।
  • bufsizeआपके maxrate(एक सेकंड) और आपके दो बार maxrate(2 सेकंड) के बीच में कहीं सेट करें । यदि यह अभी भी कम नहीं है, maxrateतो अपने को कम करें और फिर उसके bufsizeअनुसार फिर से सेट करें ।

फिर, आपको थोड़ा संभल कर खेलना होगा, लेकिन जब से आपको कहीं से शुरुआत करनी होगी, मैं maxrateलगभग 600k पर शुरू करूंगा , जो कि आमतौर पर मेरे लिए काफी संतोषजनक था इससे पहले कि मैं crfहर चीज के लिए उपयोग करता हूं ।

यदि आप चाहें, तो आप bufsizeहर तीन या चार सेकंड के लिए निम्न मानों को आज़मा सकते हैं , बस यह देखने के लिए कि मान कैसे बदलता है, आपका आउटपुट कैसा दिखता है। फिर आप यह निर्धारित कर सकते हैं कि आपको अपने वीडियो के लिए इसकी कितनी चिंता करनी चाहिए।

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


1
कहीं आपके अधिकतम (एक सेकंड) और आपके आधे हिस्से के आधे हिस्से (2 सेकंड) के बीच में "सेट किए गए" न हों, जो आपके अधिकतम (एक सेकंड) और दो बार आपकी अधिकतम सीमा (2) के बीच कहीं से bufsize करें सेकंड) ”?
एली

@ मुझे लगता है कि आप सही हैं। मेरा यह हर आधे सेकंड में होता। मैं ठीक कर दूँगा!
व्याट8740

@ Wyatt8740 क्षमा करें, मैं बहुत व्यस्त था। हालांकि सिर्फ एक सवाल। यदि मैं उपयोग करता हूं crf, तो मुझे निर्दिष्ट करने की आवश्यकता नहीं है bitrate, buffsizeऔर maxrate? और यदि ऐसा है, जो अधिक कुशल है (उपयोग crfया bitrate, buffsizeऔर maxrate)?
रॉबिन

@ रॉबिन आप bufsize का उपयोग कर सकते हैं और crf के साथ अधिकतम कर सकते हैं। याद रखें, crf मक्खी पर बिटरेट को एक निश्चित गुणवत्ता से मेल खाने के लिए समायोजित करेगा, और अगर वीडियो के हिस्से बहुत जटिल हैं, तो बिटरेट आकाश-उच्च शूट करेगा और आप शायद ऐसा नहीं चाहते, इसलिए बेहतर "bufize के साथ" लॉक लगा दें और अधिकतम (लेकिन बहुत सख्त नहीं है, या आप वीडियो बकवास की तरह दिखेंगे! :))
Ely

@ रॉबिन सही है, आपको दूसरों के साथ crf का उपयोग करने की आवश्यकता नहीं है। हालांकि, यदि आप इसे कसना चाहते हैं तो आप कर सकते हैं। crf निरंतर गुणवत्ता बनाए रखने की कोशिश करता है - आप इसे सीमा के भीतर bufsizeऔर ऐसा करने के लिए मजबूर कर सकते हैं maxrate। आप की जरूरत नहीं है bitrate, यद्यपि। जैसा कि एली ने कहा, यह स्ट्रीमिंग के लिए बेहतर बना देगा।
व्याट8740
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.