वीडियो एन्कोडिंग के आंकड़े एक्सपोर्ट करना

Android 13 और उसके बाद के वर्शन में, ऐप्लिकेशन क्लाइंट वीडियो एन्कोडर की मदद से, एन्कोड किए गए हर वीडियो फ़्रेम के लिए, एन्कोडिंग के आंकड़े एक्सपोर्ट किए जा सकते हैं. वीडियो एन्कोडर से मिले आंकड़ों की मदद से, ऐप्लिकेशन अपने वीडियो एन्कोडिंग टास्क को ऑप्टिमाइज़ कर सकते हैं. जैसे, एन्कोड करने से पहले मल्टीपास एन्कोडिंग और फ़्रेम की प्रोसेसिंग करना.

वीडियो एन्कोडिंग के आंकड़े एक्सपोर्ट करने के लिए, SoC वेंडर को वीडियो एन्कोडर बदलना होगा ड्राइवर के तौर पर, वीडियो एन्कोडर ड्राइवर के अपडेट में बताया गया है.

वीडियो एन्कोडिंग आंकड़ों का डेटा

Android 13 में, वीडियो एन्कोडर आंकड़ों का डेटा एक्सपोर्ट करता है, जैसा कि नीचे दी गई टेबल में दिखाया गया है.

एन्कोडर के आंकड़ों का नाम ब्यौरा
हर फ़्रेम के लिए औसत ब्लॉक क्यूपी वीडियो फ़्रेम में, बिट स्ट्रीम में कोड में बदले गए सभी ब्लॉक क्यूपी का औसत
तस्वीर का टाइप I या P या B टाइप करें

डेवलपर, MediaFormat डेवलपर क्लास का इस्तेमाल करके, हर फ़्रेम के लिए आंकड़ों की जानकारी हासिल कर सकते हैं.

वीडियो एन्कोडर ड्राइवर से जुड़े अपडेट

वीडियो एन्कोडिंग के आंकड़ों को एक्सपोर्ट करने में मदद करने के लिए, SoC वेंडर को वीडियो एन्कोडर ड्राइवर. Android 13 में कोडेक 2.0 बेस में ये कुंजियां जोड़ी गई हैं:

  • KEY_VIDEO_QP_AVERAGE हर फ़्रेम के हिसाब से जानकारी देता है औसत ब्लॉक QP.

    KEY_VIDEO_QP_AVERAGE की को लागू करने के लिए, ये नियम लागू होते हैं:

    • SoC एन्कोडर को ब्लॉक क्यूपी के औसत को सबसे करीब तक पूरा करना चाहिए कोडेक 2.0 में माइग्रेट करने से पहले पूर्णांक

    • औसत वैल्यू का हिसाब सिर्फ़ ल्यूमा प्लेन से लगाया जाता है.

    • अगर मौजूदा फ़्रेम के सभी ब्लॉक, स्किप किए गए मोड में हैं, तो SoC एन्कोडर को INT_MAX दिखाना चाहिए. यह स्थिति तब होती है, जब कोई गुणांक पता नहीं होता है फ़्रेम में एन्कोड किया जाता है और क्यूपी की कोई अहम जानकारी नहीं होती.

  • KEY_PICTURE_TYPE कोड में बदले गए फ़्रेम के पिक्चर टाइप को PICTURE_TYPE_I के तौर पर बताता है, PICTURE_TYPE_P, PICTURE_TYPE_B, या PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL से पता चलता है कि वीडियो एन्कोडर से, एन्कोडिंग के आंकड़ों की जानकारी किस लेवल पर भेजी गई है. इसकी जानकारी यहां दी गई है:

    • जब एन्कोडर, एन्कोडिंग आंकड़ों के बारे में कोई जानकारी जनरेट नहीं करता, तो यह कुंजी VIDEO_ENCODING_STATISTICS_LEVEL_NONE पर सेट है.

    • जब एन्कोडर हर फ़्रेम के लिए KEY_VIDEO_QP_AVERAGE और KEY_PICTURE_TYPE जनरेट करता है, तो यह कुंजी VIDEO_ENCODING_STATISTICS_LEVEL_1 पर सेट हो जाती है.

VideoEncodingStatisticsTest देखें देखें.

पुष्टि करें

VideoEncodingStatisticsTest सीटीएस टेस्ट चलाकर पुष्टि करें कि वीडियो को एन्कोड करने के आंकड़ों में, औसत क्यूपी का हिस्सा सही तरीके से काम कर रहा है या नहीं: सीटीएस, एक ही इनपुट वीडियो की दो एन्कोडिंग करता है. एक एन्कोडिंग में बिटरेट ज़्यादा होता है और दूसरी में कम. इसके बाद, सीटीएस ने दोनों की तुलना दो एन्कोडिंग से एक्सपोर्ट की गई औसत क्यूपी वैल्यू. अगर कम बिटरेट वाली एन्कोडिंग का औसत क्यूपी, ज़्यादा बिटरेट वाली एन्कोडिंग के औसत क्यूपी से ज़्यादा है, तो सीटीएस पास हो जाता है.

वीडियो को एन्कोड करने के आंकड़ों को एक्सपोर्ट करने की सुविधा चालू होने पर, उसे बंद करने की पुष्टि करने के लिए, VIDEO_ENCODING_STATISTICS_LEVEL_NONE बटन का इस्तेमाल इस तरह करें:

format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);