इस सेक्शन में, सामान्य प्रोफ़ाइलों के लिए VP9 एन्कोडिंग से जुड़े सुझाव दिए गए हैं:

  • वेब और मोबाइल (वीओडी) के लिए, ज़्यादा ऑप्टिमाइज़ किया गया वीडियो
  • प्रीमियम कॉन्टेंट डिस्ट्रिब्यूशन (वीओडी)
  • खेल-कूद, ऐनिमेशन, 10-बिट कॉन्टेंट (वीओडी)
  • लाइव एन्कोडिंग
  • WebRTC

परिचय

वीडियो को कोड में बदलते समय, कई बातों का ध्यान रखना होता है:

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

इस सेक्शन में, सबसे पहले मांग पर उपलब्ध वीडियो फ़ाइल की सेटिंग के बारे में बताया गया है. इसके बाद, इन सभी सवालों के जवाब दिए गए हैं.

मूल सेटिंग

कोड में बदलने के लिए बिटरेट

वेब और मोबाइल पर वीडियो डिस्ट्रिब्यूट करने के लिए, यहां दिए गए बिटरेट को बेसलाइन के तौर पर इस्तेमाल करने का सुझाव दिया गया है. इन सुझावों से बिटरेट कम हो जाता है. इससे उपभोक्ता वेब और मोबाइल डिस्ट्रिब्यूशन के लिए, वीडियो की क्वालिटी बेहतर हो जाती है. इन्हें 'कम' बिटरेट के सुझाव के तौर पर देखा जा सकता है. इससे वीडियो की क्वालिटी अब भी ठीक बनी रहती है.

सुझाए गए टारगेट बिटरेट

फ़्रेम का साइज़/रेट औसत बिटरेट (वीओडी, केबीपीएस) औसत बिटरेट (लाइव, केबीपीएस)
320x240 पिक्सल @ 24,25,30 150 250
640x360 पिक्सल @ 24,25,30 276 386
640x480 पिक्सल @ 24,25,30 512 (LQ), 750 (MQ) 720 (LQ), 1024 (MQ)
1280x720p @ 24,25,30 1024 1440
1280x720 पिक्सल @ 50,60 1800 2500
1920x1080 पिक्सल @ 24,25,30 1800 2500
1920x1080 पिक्सल @ 50,60 3000 4200
2560x1440 पिक्सल @ 24,25,30 6000 8400
2560x1440 पिक्सल @ 50,60 9000 12600
3840x2160 पिक्सल @ 24,25,30 12000 16800
3840x2160 पिक्सल @ 50,60 18000 25200

इमेज 2a: टारगेट बिटरेट

वीओडी एन्कोडिंग सेटिंग

ज़्यादातर तरह के कॉन्टेंट के लिए सेटिंग

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

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

CQ एन्कोडिंग के लिए एन्कोडर की सेटिंग

फ़्रेम की ऊंचाई टारगेट क्वालिटी (सीक्यू) कोडिंग मोड
240 37 TWO_PASS_MEDIUM
360 36 TWO_PASS_MEDIUM
480 34 (खराब क्वालिटी) या 33 (मीडियम क्वालिटी) TWO_PASS_MEDIUM
720 32 TWO_PASS_FAST
1080 31 TWO_PASS_FAST
1440 24 TWO_PASS_FAST
2160 15 TWO_PASS_FAST

इमेज 2b: CQ की सुझाई गई सेटिंग

हमारा आखिरी सुझाव है कि कीफ़्रेम के बीच वीडियो के 240 फ़्रेम होने चाहिए. 30 एफ़पीएस वाले कॉन्टेंट के लिए, इसका मतलब है कि वीडियो की अवधि 8 सेकंड होनी चाहिए. कीफ़्रेम, वीडियो फ़्रेम होते हैं. ये अपने-आप में पूरे होते हैं. इन्हें रेंडर करने के लिए, किसी दूसरे फ़्रेम की ज़रूरत नहीं होती. ज़्यादा जानकारी के लिए, जीओपी स्ट्रक्चर देखें. वेब और मोबाइल पर वीडियो चलाने के लिए, हम कीफ़्रेम के बीच ज़्यादा स्पेस रखने की अनुमति देते हैं. ऐसा इसलिए, क्योंकि इससे एन्कोडर को क्वालिटी बढ़ाने के लिए, कीफ़्रेम को 'सबसे अच्छी' जगह पर रखने का विकल्प मिलता है.

कमांड-लाइन पैरामीटर का उदाहरण: 640x360 वीडियो

ऊपर दी गई जानकारी के हिसाब से, 360 पिक्सल वाले वीडियो के लिए ये सुझाव दिए गए हैं:

  1. CQ का लेवल 36 (आंकड़ा 2b देखें)
  2. टारगेट बिटरेट 276 केबीपीएस (आंकड़ा 2a देखें)
  3. कम से कम 138 केबीपीएस (टारगेट का 50%) का बिटरेट
  4. ज़्यादा से ज़्यादा 414 केबीपीएस (टारगेट का 150%) बिटरेट की अनुमति है
  5. कीफ़्रेम के बीच ज़्यादा से ज़्यादा 240 सेकंड का अंतर
  6. दो पास वाली, "मीडियम" प्रोफ़ाइल

इससे libvpx और FFmpeg के लिए, ये कमांड-लाइन पैरामीटर मिलते हैं:

libvpx

--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
  --maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Premium कॉन्टेंट की सेटिंग

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

प्रीमियम कॉन्टेंट के लिए, हमारा सुझाव है कि ऊपर दी गई सेटिंग का इस्तेमाल करें. हालांकि, इसमें अलग-अलग प्रीसेट का इस्तेमाल करें. साथ ही, एनकोडर को निर्देश दें कि वह क्वालिटी को ऑप्टिमाइज़ करने में ज़्यादा समय लगाए:

पैसे चुकाकर देखे जाने वाले कॉन्टेंट के लिए एन्कोडिंग मोड और कमांड-लाइन पैरामीटर

फ़्रेम की ऊंचाई कोडिंग मोड libvpx FFmpeg
240 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
360 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
480 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
720 TWO_PASS_SLOW --good --cpu-used 1 -good -speed 1
1080 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
1440 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
2160 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2

इमेज 2c: प्रीमियम कॉन्टेंट को कोड में बदलने के मोड

खेल-कूद और तेज़ी से चलने वाले कॉन्टेंट की सेटिंग

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

कमांड-लाइन के लिए, QP और VBR मोड के बीच मुख्य अंतर यह है कि आपको CQ लेवल तय नहीं करना होगा. हालांकि, सुझाई गई अन्य सेटिंग एक जैसी होती हैं.

वीबीआर कमांड-लाइन पैरामीटर का उदाहरण: 640x360 वीडियो

libvpx

--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
  --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

ऐनिमेशन और गेमिंग की सेटिंग

बेकार / खराब क्वालिटी वाले कॉन्टेंट की सेटिंग

शोरगुल वाले कॉन्टेंट के लिए, हमारा सुझाव है कि alt-ref frames की संख्या और उनकी क्वालिटी बढ़ाएं. वैकल्पिक रेफ़रंस फ़्रेम, 'अदृश्य' फ़्रेम होते हैं. ये कभी भी उपयोगकर्ता को नहीं दिखाए जाते. हालांकि, इनका इस्तेमाल फ़ाइनल फ़्रेम बनाते समय रेफ़रंस के तौर पर किया जाता है. इसके बारे में ज़्यादा जानकारी यहां पढ़ी जा सकती है.

VP9 को ज़्यादा alt-ref फ़्रेम इस्तेमाल करने का निर्देश देने के लिए, इन पैरामीटर का इस्तेमाल करने का सुझाव दिया जाता है:

libvpx

--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3

FFmpeg

10-बिट/एचडीआर एन्कोडिंग

10-बिट एन्कोडिंग के लिए, VP9 Profile 2 का इस्तेमाल करें. 10-बिट पर एन्कोडिंग के लिए, किसी और बिट की ज़रूरत नहीं होती. इसलिए, बाकी पैरामीटर एक जैसे होते हैं:

libvpx

--profile=2

FFmpeg

-profile 2

लाइव एन्कोडिंग की सेटिंग

लाइव स्ट्रीमिंग

लाइव एन्कोडिंग आम तौर पर CBR के तौर पर की जाती है. इससे एन्कोडर की क्वालिटी को बेहतर बनाने की क्षमता सीमित हो जाती है. इस वजह से, हम ज़्यादा बिटरेट का इस्तेमाल करेंगे, जैसा कि इमेज 2a में दिखाया गया है.

लाइव एन्कोडिंग के लिए, हम थ्रेडिंग को भी ज़्यादा से ज़्यादा करना चाहते हैं. ऐसा करने के लिए:

  1. VP9 को वीडियो को कॉलम में बांटने की अनुमति देना. इन कॉलम की चौड़ाई 256 पिक्सल से कम नहीं होनी चाहिए और यह दो की पावर में होनी चाहिए;
  2. VP9 को ज़्यादा सीपीयू पावर इस्तेमाल करने का निर्देश देता है. इस टेबल में, हर रिज़ॉल्यूशन के लिए सुझाव दिए गए हैं.

टाइलिंग और थ्रेडिंग के सुझाव

CQ एन्कोडिंग के लिए एन्कोडर की सेटिंग
फ़्रेम का साइज़ टाइल-कॉलम की संख्या थ्रेड की संख्या
320x240 1 2
640x360 2 4
640x480 2 4
1280x720 4 8
1920x1080 4 8
2560x1440 8 16
3840x2160 8 16

इमेज 2d. लाइव एन्कोडिंग के लिए, सुझाए गए टाइलिंग और थ्रेडिंग

लाइव एन्कोडिंग, परफ़ॉर्मेंस को बेहतर बनाने के लिए समयसीमा को 'रीयलटाइम' पर भी सेट करेगी. साथ ही, यह alt-ref फ़्रेम को आने वाले समय में न देखने का निर्देश देगी. ऐसा करने से, लेटेन्सी कम हो जाएगी:

इससे, 360 डिग्री वाले 360 पिक्सल के लाइव वीडियो के लिए ये सुझाव मिलते हैं:

  1. CBR, 386 केबीपीएस का टारगेट बिटरेट (आंकड़ा 2a देखें)
  2. दो टाइल कॉलम (आंकड़ा 2d देखें)
  3. चार थ्रेड (आंकड़ा 2d देखें)
  4. रीयल-टाइम परफ़ॉर्मेंस
  5. वैकल्पिक फ़्रेम की वजह से कोई इंतज़ार का समय नहीं (कोई फ़्रेम लैग नहीं)

इससे libvpx और FFmpeg के लिए, ये कमांड-लाइन पैरामीटर मिलते हैं:

libvpx

--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0

FFmpeg

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
  -minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm

DASH/YouTube के लिए VP9 की लाइव एन्कोडिंग

WebRTC एन्कोडिंग