ब्यौरे में VP9 बिटरेट मोड

परिचय

हालांकि, हम अपने सामान्य एन्कोडिंग पेजों में बिटरेट मोड के बारे में बेहतर जानकारी देते हैं, लेकिन वे सिर्फ़ क्यूक्यू (सीमित क्वालिटी) मोड पर काम करते हैं.

इस दस्तावेज़ में ऐसे दूसरे तरीकों के बारे में बताया गया है जिनसे आप VP9 बिटरेट को अपने हिसाब से तैयार कर सकते हैं. इससे आप कई तरह के हालातों के हिसाब से अपनी साइट को ऑप्टिमाइज़ कर सकते हैं. नीचे दिए गए उदाहरणों में FFmpeg का इस्तेमाल किया गया है.

संपीड़न

VM

इसे पाने के लिए इस्तेमाल की जाने वाली एक मुख्य तकनीक संख्या है. क्वांटाइज़र, इमेज के डिजिटल फ़ॉर्मैट को आसान बनाने में मदद करता है. उदाहरण के लिए, हो सकता है कि इस्तेमाल किए गए रंगों की रेंज कम हो जाए. साथ ही, यह डेटा पर गणित के काम कर सकता है, ताकि कम रंग सीमा में इसका ठीक से काम न किया जा सके. ऐसे कई फ़ंक्शन हैं.

आंकड़ों के बारे में या कोट (इसके Wikipedia लेख) में अच्छी तरह से बताया गया है.

VP9 में, आकलन को ट्रांसफ़ॉर्म गुणांक पर किया जाता है. यह एन्कोडिंग में जोड़कर, ज़रूरी क्वालिटी को बनाए रखने के लिए ज़रूरी बिटरेट को कम कर देता है.

आखिरकार, ज़्यादा संख्या (ज़्यादा संख्या वाले सवाल) होने पर, जानकारी खो जाती है और क्वालिटी कम हो जाती है. हालांकि, फ़्रेम को सेव करने के लिए कम डेटा चाहिए. ज़्यादातर मामलों में, VP9 एन्कोडर हर फ़्रेम की जटिलता के आधार पर, समय के साथ Q में बदलाव करके अपने बिटरेट के लक्ष्य हासिल करता है.

केस ऑप्टिमाइज़ेशन का इस्तेमाल करें

उपयोगकर्ता को कई खास इंटरफ़ेस के ज़रिए शुरुआती कंप्रेस करते समय क्वालिटी और बिटरेट में बदलाव करने की अनुमति देने के लिए

एन्कोडर में स्पीड, क्वालिटी, और बिटरेट के बीच स्लाइडिंग ट्रेडऑफ़ है.

  • अगर उपयोगकर्ता का ध्यान क्वालिटी पर है, तो उसे या तो ज़्यादा समय के लिए तैयार किया जाना चाहिए या तेज़ी से और ज़्यादा मात्रा में प्रोसेसिंग संसाधन उपलब्ध कराने के लिए तैयार किया जाना चाहिए.

  • अगर उपयोगकर्ता का ध्यान यह पक्का करने पर है कि आउटपुट VP9 छोटी फ़ाइल छोटी है और उसे तेज़ी से डिलीवर किया जा सकता है, तो इमेज की मात्रा कम करने के लिए इसे तैयार किया जाना चाहिए. इससे नतीजा मिलता है कि क्वानाइज़र के काम करने का तरीका कम हो जाता है.

  • अगर कोई उपयोगकर्ता खास तौर पर डिलीवरी में लगने वाले समय (उदाहरण के लिए, लाइव वेबकास्ट या दोतरफ़ा वीडियो कॉन्फ़्रेंस) पर फ़ोकस करता है, तो इसका आकलन पूरी तरह इस बात पर निर्भर करेगा कि नेटवर्क के इस्तेमाल करने लायक बाइट को नेटवर्क पर कैसे समझाया जा सकता है. इसका मतलब है कि "बिटरेट करें.

सही विकल्प, हर इस्तेमाल के उदाहरण के हिसाब से काफ़ी सटीक होगा. इस बैलेंस को आपके इस्तेमाल के हिसाब से अडजस्ट करना आसान बनाने के लिए, VP9 चार "बिटरेट मोड" में सादगी भरे कॉन्फ़िगरेशन की सुविधा देता है.

VP9 बिटरेट मोड

आइए, VP9 के साथ काम करने वाले मुख्य बिटरेट मोड पर नज़र डालें:

मोड
कॉन्सटेंट क्वांटाइज़र (Q) इसकी मदद से आप एक निश्चित संख्या का मान तय कर सकते हैं; बिटरेट अलग-अलग होगा
सीमित क्वालिटी (सीक्यू) आपको क्वालिटी लेवल सेट करने की सुविधा देता है. क्वालिटी, बिटरेट पैरामीटर में अलग-अलग हो सकती है
वैरिएबल बिटरेट (VBR) बिटरेट के साथ समय के साथ-साथ, क्वालिटी और बिटरेट को बैलेंस करता है
स्थिर बिटरेट (सीबीआर) क्वालिटी के अलग-अलग होने पर बिटरेट को एक जैसा बनाए रखने की कोशिश की जाती है

सवाल

क्यू मोड चार्ट

कॉन्सटेंट क्वेंटाइज़र मोड, ऐसी स्थितियों में सबसे अच्छा विकल्प होता है जब फ़ाइल-साइज़ और बिटरेट से जुड़ी समस्याएं, आखिरी क्वालिटी पर निर्भर करती हैं.

Q सेटिंग के उपयोग के उदाहरण डिजिटल सिनेमा, डिजिटल संपादन सुइट या डिजिटल साइनेज ऐप्लिकेशन में मिल सकते हैं, जहां सामग्री को किसी वास्तविक जगह पर या

VP9 Q मोड बिटरेट ऑप्टिमाइज़ेशन

कॉन्सटेंट क्वंटाइज़र मोड के लिए कम से कम कॉन्फ़िगरेशन की ज़रूरत होती है. जैसा कि नाम से पता चलता है, Q मोड का टारगेट, &क्वालिटी&कोटेशन के लेवल पर क्वानाइज़र बनाए रखने पर है. साथ ही, क्वांटाइज़र को डेटा के उस फ़्लो को तय करने की अनुमति देता है जिसे वह प्रोसेस करना चाहता है. उपयोगकर्ता को सिर्फ़ टारगेट की क्वालिटी की ज़रूरत होती है.

बेसिक एन्कोडिंग लेख में इमेज प्रोसेसिंग फ़ोकस (बिटरेट फ़ोकस नहीं) से, टारगेट क्वालिटी की खास बातों के बारे में ज़्यादा जानकारी दी गई है.

क्यू मोड बिटरेट ऑप्टिमाइज़ेशन के लिए नीचे दिए गए FFmpeg कमांड-लाइन पैरामीटर का इस्तेमाल करें:

आमने-सामने
-b:v 0 वीडियो बिटरेट को 0 के तौर पर मार्क करके, हम साफ़ तौर पर &कोटेशन मोड सेट करते हैं
-g <arg> फ़्रेम में कीफ़्रेम इंटरवल सेट करता है (डिफ़ॉल्ट रूप से 240 पर सेट होता है)
-crf <arg> क्वालिटी लेवल सेट करता है. मान्य वैल्यू 0-63 है. कम संख्याएं अच्छी क्वालिटी की होती हैं
-quality good -speed 0 ज़्यादातर ऐप्लिकेशन के लिए डिफ़ॉल्ट और सुझाया गया. best रिसर्च टूल का एक ज़्यादा हिस्सा है. इसमें -quality good -speed 0 में मार्जिनल सुधार किया गया है
-lossless लॉसलेस मोड

Q मोड बिटरेट : FFmpeg उदाहरण

पहला उदाहरण बहुत ज़्यादा Q मोड सेटिंग है और यह सिर्फ़ उदाहरण के लिए दिया गया है. (उदाहरण के तौर पर, इन उदाहरणों में दी गई 120 सेकंड की क्लिप को प्रोसेस करने में कई घंटे लगेंगे. साथ ही, बनाई गई आउटपुट फ़ाइल, आम तौर पर मूल स्रोत से बहुत बड़ी होती है.)

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -g 1 -b:v 0 -crf 0 -quality good \
  -speed 0 -lossless 1 -c:a libvorbis Q_g_1_crf_0_120s_tears_of_steel_1080p.webm.webm

-crf के असर की तुलना करने के लिए, नीचे दिए गए उदाहरण सिर्फ़ -crf में अंतर हैं. ध्यान दें कि -g को नहीं के तौर पर सेट किया गया है, इसलिए डिफ़ॉल्ट रूप से 240 और डिफ़ॉल्ट तौर पर -crf डिफ़ॉल्ट के तौर पर 10 होगा. इसलिए, दोनों में से किसी भी नतीजे में बिना दूसरे पैरामीटर के एक जैसे नतीजे मिलते

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 0 -quality good \
  -speed 0 -c:a libvorbis Q_crf_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -c:a libvorbis Q_crf_10_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 63 -quality good \
  -speed 0 -c:a libvorbis Q_crf_63_120s_tears_of_steel_1080p.webm

इन उदाहरणों के आउटपुट डिस्क पर साइज़ के हिसाब से अलग-अलग होते हैं. -crf को 0 पर सेट करके, फ़ाइल 711.8 एमबी पर सेट होती है. साथ ही, -crf को 10 पर 125.3 एमबी और -crf को 63 पर सेट करके फ़ाइल को 4.5 एमबी पर सेट किया गया. बहुत सरल शब्दों में, यह हाइलाइट करता है कि हमने -crf तर्क का मान बढ़ाकर, नतीजे में मिली VP9-कोड में बदली गई फ़ाइल की क्वालिटी कम कर दी है. सभी आउटपुट फ़ाइलों की पूरी जानकारी नीचे दी गई नतीजों की टेबल में दी गई है.

अब हम -g सेटिंग के अलग-अलग होने के असर की तुलना करते हैं.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 1 -b:v 0 -quality good \
  -speed 0  -c:a libvorbis Q_g_1_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 240 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_240_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 480 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_480_120s_tears_of_steel_1080p.webm

हमें पता चलता है कि -g 1 सेटिंग से 25.9 एमबी की बहुत बड़ी फ़ाइल बनती है. इसकी तुलना, -g 240 से शुरू करें (साफ़ तौर पर डिफ़ॉल्ट सेटिंग की तरह), जहां हम 4.5 एमबी की फ़ाइल और -g 480 देखते हैं, जहां आखिर में 4.4 एमबी की फ़ाइल मिलती है.

क्यूक्यू

फ़ाइल-आधारित वीडियो के लिए, CQ सुझाया गया मोड है.

CQ मोड चार्ट

हमारा सुझाव है कि ज़्यादातर कॉन्टेंट टाइप के लिए, सीमित क्वालिटी वाले (सीक्यू) मोड का इस्तेमाल करें, बिटरेट कैप के साथ. ज़्यादातर वीडियो में ज़्यादा हलचल वाले सीन (जैसे कि ऐक्शन के क्रम) और कम सीन वाले सीन (जैसे कि बातचीत) शामिल होते हैं. CQ मोड, एन्कोडर को लंबे, आसान सीन (बिट को बर्बाद किए बिना) के दौरान सही क्वालिटी लेवल बनाए रखने में मदद करता है. साथ ही, मुश्किल क्रम के लिए ज़्यादा बिट तय करता है.

फिर भी, हमें सबसे बेहतर सीमा तय करके, प्रोसेस को सीमित करना होगा. ऐसा न करने पर, हम कंप्रेस नहीं कर पाएंगे! हम लोअर रेंज भी सेट कर सकते हैं. भले ही, इमेज का रंग काला हो और एन्कोडिंग की प्रक्रिया करीब-करीब कुछ भी न हो. फिर भी, हम उस डेटा को थोड़ा बेहतर तरीके से इस्तेमाल कर सकते हैं, लेकिन हो सकता है कि ब्लैक का रंग कम और ज़्यादा न हो.

इसके अलावा, हमें क्वांटाइज़र थ्रेशोल्ड भी सेट करना होगा. VP9 में क्वैन्स्टर थ्रेशोल्ड 0 से 63 तक अलग-अलग हो सकता है.

CQ मोड के लिए, नीचे दिए गए FFmpeg कमांड लाइन पैरामीटर का इस्तेमाल किया जाता है:
आमने-सामने
-b:v <arg> टारगेट बिटरेट सेट करता है (उदाहरण के लिए, 500k)
-minrate <arg>
-maxrate <arg>
कम से कम और ज़्यादा से ज़्यादा बिटरेट सेट करता है.
-crf <arg> क्वालिटी लेवल सेट करता है. मान्य वैल्यू 0 से 63 हैं, कम वैल्यू ज़्यादा अच्छी हैं.
CQ बिटरेट मोड: FFmpeg के उदाहरण

पहला उदाहरण उचित रूप से चौड़ा हिस्सा देता है. हालांकि, सवाल के लिए ऊपर दिए गए उदाहरणों की तुलना में, हमें पता चला है कि यह बिटरेट को ज़्यादा सीमा में ले जाता है. साथ ही, आउटपुट क्वालिटी काफ़ी ज़्यादा है. फ़ाइल का साइज़ काफ़ी बड़ा है.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1000k -maxrate 4000k -crf 10  -c:a libvorbis \
  CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm

इस इंस्टेंस में आउटपुट फ़ाइल डिस्क पर 20.2MB थी -- जो ऊपर दिए गए उदाहरणों में Q मोड एन्कोडिंग से काफ़ी कम है.

अगले उदाहरण के उलट, हमने बिटरेट को करीब-करीब तय की गई सीमा तक सीमित रखा है.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10  -c:a libvorbis \
  CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm

इस मामले में आउटपुट फ़ाइल का आकार 24.1 एमबी था और कई बार वीडियो की क्वालिटी और जटिलता की वजह से, पिछले उदाहरण की तुलना में वीडियो की क्वालिटी कम हो जाती है.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 1000k \
  -minrate 750k -maxrate 1400k -crf 10  -c:a libvorbis \
  CQ_1400_750_crf_10_120s_tears_of_steel_1080pp.webm

इस अंतिम उदाहरण में, आउटपुट में डिस्क का साइज़ काफ़ी छोटा करके 13.2 एमबी तक किया गया है.

वीबीआर

ज़्यादा बिटरेट वाले कॉन्टेंट (उदाहरण के लिए, खेल) के वीडियो मांग पर मिलने वाले वीडियो स्ट्रीम करने के लिए, वैरिएबल बिटरेट मोड (वीबीआर) का सुझाव दिया जाता है. यह एचटीटीपी आधारित डिलीवरी के लिए सही है.

VBR मोड का चार्ट

वीबीआर मॉडल में, ऐक्शन सीन को ऐसे कोटेशन के मुकाबले ज़्यादा बिटरेट के साथ कोड में बदला जा सकता है जो "easier" ऐसे सीन हैं जो कीफ़्रेम के साथ मेल खाते हों.

बड़े स्ट्रीमिंग डिलीवरी मॉडल के लिए, VBR फ़ायदे डिस्ट्रिब्यूशन और इन्फ़्रास्ट्रक्चर की शर्तों में भी हो सकते हैं. जब कई VBR स्ट्रीम एक ही इन्फ़्रास्ट्रक्चर से डिलीवर की जाती हैं, तो इससे सिस्टम का इस्तेमाल करने वाले सभी दर्शकों को फ़ायदा मिलता है.

वीपी9 वीबीआर को भी खेल और दूसरे कॉन्टेंट को हाई मोशन में बदलने के लिए सुझाया जाता है. इन वीडियो को देखकर, यह तय किया जा सकता है कि कम रफ़्तार वाले वीडियो किस क्वालिटी में उपलब्ध कराए जाएं.

VBR मोड के लिए, नीचे दिए गए FFmpeg कमांड-लाइन पैरामीटर का इस्तेमाल किया जाता है:
आमने-सामने
-quality good अगर यह मौजूद है, तो FFmpeg आगे दी गई -speed सेटिंग पर ध्यान देगा
-speed <arg> वीडियो चालू करने के लिए मान्य मान 0-4 हैं, जिसमें 0 सबसे अच्छी क्वालिटी है और 4 सबसे कम क्वालिटी है. (लाइव स्ट्रीमिंग के लिए यह सीमा 5-8 है - नीचे CBR देखें)
VBR बिटरेट मोड: FFmpeg के उदाहरण
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 0  -c:a libvorbis \
  VBR_good_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5  -c:a libvorbis \
  VBR_good_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 8  -c:a libvorbis \
  VBR_good_8_120s_tears_of_steel_1080pp.webm

CBR

VP9 के साथ लाइव स्ट्रीमिंग करने के लिए, कॉन्सटेंट बिटरेट मोड (CBR) का सुझाव दिया जाता है.

CBR मोड चार्ट

सीबीआर में ऊपर के बिटरेट को & &कोटेशन; इसका मतलब है कि कोड में बदलने का तरीका इस्तेमाल करके, ऐसी दर से डेटा नहीं बनाया जा सकता जो नेटवर्क नहीं पहुंचा सकता.

उदाहरण के लिए, रीयल-टाइम कम्यूनिकेशन (वीडियो कॉन्फ़्रेंसिंग) स्ट्रीम करने के लिए यह ज़रूरी है कि कोड में बदलने वाला ऐप्लिकेशन, नेटवर्क में ज़रूरत से ज़्यादा डेटा न भरे. अगर ऐसा होता है, तो ऑडियो/वीडियो सिंक करने में आने वाली समस्याएं या फ़्रीज़ किए गए फ़्रेम, उपयोगकर्ता के अनुभव पर बहुत ज़्यादा असर डालते हैं. इससे, कंप्रेस करने की क्षमता कम होती है. यह पक्का करके कि हार्ड छत की जानकारी दी गई है, VP9 उस सीमा तक पहुंचने पर क्वालिटी को कम कर देगा.

CBR मोड के लिए, नीचे दिए गए FFmpeg कमांड-लाइन पैरामीटर का इस्तेमाल किया जाता है:
आमने-सामने
-quality realtime अगर यह मौजूद है, तो FFmpeg आगे दी गई -speed सेटिंग पर ध्यान देगा
-speed <arg> लाइव स्ट्रीमिंग के लिए मान्य मान 5 से 8 हैं, जिसमें 5 सबसे ज़्यादा क्वालिटी और 8 सबसे कम क्वालिटी हैं. (मांग पर उपलब्ध वीडियो के लिए ये शून्य से चार तक हैं. ऊपर VBR देखें.)
-minrate <arg>
-maxrate <arg>
कम से कम और ज़्यादा से ज़्यादा बिटरेट सेट करता है ** इन्हें सीबीआर मोड के लिए एक ही -b:v बिटरेट वैल्यू पर सेट किया जाना चाहिए** .

आसान शब्दों में, हम टारगेट, कम से कम, और ज़्यादा से ज़्यादा बिटरेट के डेटा को एक ही वैल्यू पर ठीक करते हैं. साथ ही, संख्या को यह भी बताते हैं कि कार्रवाइयां समय के हिसाब से संवेदनशील हैं.

CBR बिटरेट मोड: FFmpeg के उदाहरण

नीचे दिए गए उदाहरणों में, बिटरेट को 2 एमबीपीएस और 500 केबीपीएस टारगेट पर सेट किया गया है:

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 0 -c:a libvorbis \
  CBR_2000_realtime_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -c:a libvorbis \
  CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 8 -c:a libvorbis \
  CBR_2000_realtime__8_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 0 -c:a libvorbis \
  CBR_500_realtime__0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -c:a libvorbis \
  CBR_500_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 8 -c:a libvorbis \
  CBR_500_realtime_8_120s_tears_of_steel_1080p.webm

नतीजे

ऊपर दिए गए हर कोड को Ubuntu Linux सिस्टम पर नीचे दिए गए निर्देशों के साथ लागू किया गया था:

  • प्रोसेसर: 4x Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
  • मेमोरी (रैम): 8060एमबी (1492एमबी इस्तेमाल किया गया)
  • ग्राफ़िक: Intel HD Graphics 530 (Skylake GT2)
  • OS: Ubuntu 16.04 LTS

सभी मामलों में सोर्स फ़ाइल एक मिनट, बीस सेकंड (1:20) की क्लिप थी Tear of Teel से की गई.

फ़ाइल मिनट में एन्कोड करें डिस्क पर फ़ाइल का साइज़
Q_g_1_crf_0_120s_tears_of_stiel_1080p.webm 81 1.06 जीबी
Q_crf_0_120s_tears_of_stiel_1080p.webm 131 711.8 एमबी
Q_crf_10_120s_tears_of_stels_1080p.webm 118 125.3 एमबी
Q_crf_63_120s_tears_of_stels_1080p.webm 27 4.5 एमबी
Q_g_1_120s_tears_of_stiel_1080p.webm 51 25.9 एमबी
Q_g_240_120s_tears_of_stels_1080p.webm 28 4.5 एमबी
Q_g_480_120s_tears_of_stels_1080p.webm 10 4.4 एमबी
CQ_4000_1000_crf_10_120s_tears_of_stels_1080p.webm 11 20.2 एमबी
CQ_2500_1500_crf_10_120s_tears_of_stiel_1080p.webm 9 24.1 एमबी
CQ_1400_750_crf_10_120s_tears_of_stiel_1080p.webm 50 13.2 एमबी
VBR_good_0_120s_tears_of_stels_1080p.webm 3 23.4 एमबी
VBR_good_5_120s_tears_of_stels_1080p.webm 4 23.9 एमबी
VBR_good_8_120s_tears_of_stels_1080p.webm 1 23.9 एमबी
CBR_2000_realtime_speed_0_120s_tears_of_stiel_1080p.webm 98 21 एमबी
CBR_2000_realtime_speed_5_120s_tears_of_stiel_1080p.webm 2 24.8 एमबी
CBR_2000_realtime_speed_8_120s_tears_of_stiel_1080p.webm 1 21 एमबी
CBR_500_realtime_speed_0_120s_tears_of_stiel_1080p.webm 73 6.2 एमबी
CBR_500_realtime_speed_5_120s_tears_of_stels_1080p.webm 1 8.5 एमबी
CBR_500_realtime_speed_8_120s_tears_of_stiel_1080p.webm 1 7.1 एमबी

हमें पता चला कि 5 से -speed वैल्यू को सेट करने पर, VP9 प्रोसेस होने की रफ़्तार बदल जाती है. हालांकि, इस आकलन में काफ़ी बढ़ोतरी देखी गई है (पूरी तरह से & आवाज़ कम या ज़्यादा होने की वजह से, कम क्वालिटी वाले तेज़ बिटरेट पर असर पड़ा है). फिर भी, VP9 अब भी बहुत कम बिटरेट 1080p आउटपुट दे सकता है, लेकिन बड़े डिसप्ले की तुलना में छोटे मोबाइल डिवाइसों के लिए बेहतर रहेगा.

री-स्केलिंग (फिर से साइज़ बदलना) से जुड़े इस्तेमाल के मामलों पर ध्यान देना

VP9&#39 के बिटरेट मोड साफ़ तौर पर आइसोलेट नहीं हुए हैं और उन्हें इस्तेमाल के उदाहरणों को खास तौर से टारगेट करने के लिए कई आर्ग्युमेंट और पैरामीटर के साथ जोड़ा जा सकता है. किसी खास डिवाइस को टारगेट करने के लिए, आउटपुट वीडियो का डाइमेंशन फिर से स्केल किया जा सकता है.

इसका एक क्लासिक उदाहरण, एचडी स्ट्रीम को एसडी आउटपुट में बदलना है. इससे प्रोसेसिंग में लगने वाले समय और आउटपुट बिटरेट पर काफ़ी असर पड़ेगा. ऐसे मामले में जब दो FFmpeg निर्देश एक जैसे हों, तो सिर्फ़ आउटपुट वीडियो का साइज़ बदलने पर, नतीजे वाली फ़ाइल का साइज़ बदल जाएगा. साथ ही, इससे स्ट्रीमिंग मॉडल में उसका बिटरेट भी बदल जाएगा.

इसे समझने के लिए, हमने हर बिटरेट मोड के मिड-पॉइंट उदाहरण को लिया और बस रीस्केलिंग पैरामीटर जोड़े.

क्यू मोड
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -vf scale=640x480 -c:a libvorbis 640x480_Q_crf_10_120s_tears_of_steel_1080p.webm
CQ मोड
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10 -vf scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
वीबीआर मोड
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
सीबीआर मोड
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

रीस्केलिंग के लिए नतीजों की टेबल

फ़ाइल मिनट में एन्कोड करें डिस्क पर फ़ाइल का साइज़
640x480_Q_crf_10_120s_tears_of_stels_1080p.webm 5 3.4 एमबी
640x480_CQ_crf_0_120s_tears_of_stiel_1080p.webm 2 22.4 एमबी
640x480_VBR_good_5_120s_tears_of_stiel_1080p.webm 1 22.6 एमबी
640x480_CBR_2000_realtime_5_120s_tears_of_stels_1080p.webm 4 23 एमबी

तुलना करना आसान बनाने के लिए ये वही FFmpeg निर्देश हैं जो हमारे पिछले उदाहरणों में दिए गए हैं, लेकिन स्केलिंग के बिना:

फ़ाइल मिनट में एन्कोड करें डिस्क पर फ़ाइल का साइज़
Q_crf_10_120s_tears_of_stels_1080p.webm 56 126 एमबी
CQ_2500_1500_crf_10_120s_tears_of_stiel_1080p.webm 9 24.1 एमबी
VBR_good_5_120s_tears_of_stels_1080p.webm 4 23.9 एमबी
CBR_2000_realtime_speed_5_120s_tears_of_stiel_1080p.webm 1 24.8 एमबी

जैसा कि आपको दिखेगा कि हर एक के लिए, आउटपुट फ़ाइल के साइज़ में काफ़ी कमी आई है और ज़्यादातर उदाहरणों में, एन्कोडर के समय में कमी आई है, जबकि Q मोड में एन्कोडिंग का समय असल में बढ़ गया है. वीडियो को &थोरा &थोड़ा & कंप्रेस करना; ज़्यादा मेहनत की ज़रूरत होती है, इसलिए भले ही आउटपुट फ़ाइल छोटी न हो (जैसा कि Q मोड में है), इससे आउटपुट फ़ाइल बनाने में लगने वाला समय बढ़ सकता है. यह न मानें कि एन्कोडिंग प्रोसेस की मदद से, छोटी फ़ाइल को ज़्यादा तेज़ी से डिलीवर किया जा सकता है.

बिटरेट के साथ-साथ फिर से इस्तेमाल किया जा रहा है और बिटरेट को कम करें

अंतिम तुलना के रूप में, नीचे दिए गए उदाहरणों में रीस्केलिंग के CQ, VBR, और CBR उदाहरण फिर से चलाए गए हैं. हालांकि, इस बार हम टारगेट बिटरेट को 500 केबीपीएस के लेवल तक सीमित करते हैं -- करीब एक चौथाई (इमेज के साइज़ के स्केलिंग के मुताबिक).

CQ मोड
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 550k -crf 10 -vf  scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
वीबीआर मोड
ffmpeg -i "120s_tears_of_steel_1080p.webm" -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 500k -quality good -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
सीबीआर मोड
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

टारगेट बिटरेट को फिर से बढ़ाने और कम करने के लिए, नतीजों की टेबल

फ़ाइल मिनट में एन्कोड करें डिस्क पर फ़ाइल का साइज़
640x480_CQ_500_crf_0_120s_tears_of_stiel_1080p.webm 1 7 एमबी
640x480_VBR_500_good_5_120s_tears_of_stiel_1080p.webm 1 7 एमबी
640x480_CBR_500_realtime_5_120s_tears_of_stiel_1080p.webm 1 7.6 एमबी

जैसा कि आप देख सकते हैं, एन्कोडर के समय को और छोटा कर दिया गया है.