आपने जो गणना की है वह कच्चे, असम्पीडित वीडियो के लिए बिटरेट है। आप आमतौर पर शोध या अन्य विशेष अनुप्रयोगों को छोड़कर नहीं पाएंगे। यहां तक कि ब्रॉडकास्टर्स संपीड़ित वीडियो का उपयोग करते हैं, यद्यपि आपके सामान्य YouTube वीडियो की तुलना में बहुत अधिक बिटरेट पर।
तो, वीडियो की गुणवत्ता के साथ बहुत कुछ करना है कि वीडियो कैसे संपीड़ित किया गया था। जितना अधिक आप इसे संपीड़ित करते हैं, कम बिट यह प्रति फ्रेम लेता है। इसके अलावा, जितना अधिक आप संपीड़ित करते हैं, गुणवत्ता उतनी ही खराब होती है। अब, कुछ वीडियो दूसरों की तुलना में बहुत आसान हैं - संक्षेप में, यही कारण है कि उनके पास एक ही संकल्प और फ्रैमरेट होते हुए भी कम बिटरेट है।
यह समझने के लिए कि यह क्यों है, आपको वीडियो का उपयोग करने वाले दो मुख्य सिद्धांतों से अवगत होने की आवश्यकता है। इन्हें "स्थानिक" और "लौकिक अतिरेक" कहा जाता है।
स्थानिक अतिरेक
प्राकृतिक सामग्री दिखाने वाली छवियों में स्थानिक अतिरेक मौजूद है। यही कारण है कि जेपीईजी इतनी अच्छी तरह से काम करता है - यह छवि डेटा को संपीड़ित करता है क्योंकि पिक्सेल के ब्लॉक एक साथ कोडित किए जा सकते हैं। उदाहरण के लिए, ये 8 × 8 पिक्सेल हैं। इन्हें "मैक्रोब्लॉक्स" कहा जाता है।
आधुनिक वीडियो कोडेक भी ऐसा ही करते हैं: वे मूल रूप से JPEG के समान एल्गोरिदम का उपयोग करते हैं ताकि फ्रेम को संकुचित किया जा सके, ब्लॉक द्वारा ब्लॉक किया जा सके। तो आप प्रति पिक्सेल बिट्स को स्टोर नहीं करते हैं, लेकिन मैक्रोब्लॉक के बिट्स, क्योंकि आप पिक्सेल को बड़े समूहों में "संक्षेप" करते हैं। उन्हें सारांशित करके, एल्गोरिथ्म उन सूचनाओं को भी त्याग देगा जो मानव आंखों को दिखाई नहीं देती हैं - यह वह जगह है जहां आप अधिकांश बिटरेट को कम कर सकते हैं। यह डेटा को परिमाणित करके काम करता है । यह उन आवृत्तियों को बनाए रखेगा जो अधिक विश्वसनीय हैं और जिन्हें हम नहीं देख सकते हैं, उन्हें "फेंक दें"। क्वांटाइजिंग फैक्टर को अधिकांश कोडेक्स में "क्यूपी" के रूप में व्यक्त किया गया है, और यह गुणवत्ता के लिए मुख्य नियंत्रण घुंडी है।
अब आप आगे भी जा सकते हैं और मैक्रोब्लॉक से मैक्रोब्लॉक की भविष्यवाणी कर सकते हैं जो पहले एक ही छवि में एन्कोडेड हैं। इसे इंट्रा प्रिडिक्शन कहा जाता है । उदाहरण के लिए, एक भूरे रंग की दीवार का एक हिस्सा पहले से ही फ्रेम के ऊपरी बाएं कोने में एन्कोड किया गया था, इसलिए हम उसी फ्रेम में फिर से मैक्रोब्लॉक का उपयोग कर सकते हैं, उदाहरण के लिए मैक्रोबलॉक इसके ठीक बगल में। हम केवल उस अंतर को संग्रहित करेंगे जो पिछले एक के पास था और डेटा को बचाएगा। इस तरह, हमें दो मैक्रोब्लॉक को एनकोड करना नहीं है, जो एक-दूसरे के समान हैं।
एक ही छवि आकार के लिए बिटरेट क्यों बदलता है? खैर, कुछ छवियों को दूसरों की तुलना में सांकेतिक शब्दों में बदलना आसान है। उच्च स्थानिक गतिविधि, जितना अधिक आप वास्तव में सांकेतिक शब्दों में बदलना है। चिकनी बनावट विस्तृत लोगों की तुलना में कम बिट्स लेती है। वही इंट्रा भविष्यवाणी के लिए जाता है: एक ग्रे दीवार का एक फ्रेम आपको सभी दूसरों की भविष्यवाणी करने के लिए एक मैक्रोब्लॉक का उपयोग करने की अनुमति देगा, जबकि बहने वाले पानी का एक फ्रेम भी अच्छी तरह से काम नहीं कर सकता है।
लौकिक अतिरेक
यह मौजूद है क्योंकि किसी अन्य फ्रेम का अनुसरण करने वाला फ्रेम संभवतः अपने पूर्ववर्ती के समान है। ज्यादातर, बस एक छोटा सा परिवर्तन होता है, और यह पूरी तरह से इसे सांकेतिक शब्दों में बदलना नहीं होगा। वीडियो एन्कोडर जो करते हैं, वह दो बाद के फ़्रेमों के बीच अंतर को बताता है, ठीक उसी तरह जैसे वे macroblocks के लिए कर सकते हैं।
गति क्षतिपूर्ति पर विकिपीडिया के लेख से एक उदाहरण लेते हुए , आइए बताते हैं कि यह आपका मूल ढांचा है:
फिर अगले फ्रेम का अंतर सिर्फ इतना है:
एनकोडर अब केवल वास्तविक अंतरों को संग्रहीत करता है , न कि पिक्सेल-बाय-पिक्सेल मूल्यों को। यही कारण है कि प्रत्येक फ्रेम के लिए उपयोग किए जाने वाले बिट्स हर बार समान नहीं होते हैं। ये "अंतर" फ्रेम पूरी तरह से एन्कोडेड फ्रेम पर निर्भर करते हैं, और यही कारण है कि आधुनिक कोडेक्स के लिए कम से कम दो प्रकार के फ्रेम हैं:
- I- फ्रेम (उर्फ कीफ्रेम) - ये पूरी तरह से एन्कोडेड हैं
- पी-फ्रेम - ये वे हैं जो बस अंतर को स्टोर करते हैं
आपको कभी-कभी एक वीडियो में आई-फ्रेम डालने की आवश्यकता होती है। वास्तविक बिटरेट उपयोग किए गए I- फ्रेम की संख्या पर भी निर्भर करता है। इसके अलावा, गति में अधिक अंतर दो बाद के फ़्रेमों के बीच है, जितना अधिक एनकोडर को स्टोर करना है। "कुछ भी नहीं" का एक वीडियो एक खेल वीडियो की तुलना में सांकेतिक शब्दों में बदलना आसान होगा, और प्रति फ्रेम कम बिट्स का उपयोग करेगा।