اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تصدير إحصاءات ترميز الفيديوهات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
بدءًا من Android 13، يمكن لعملاء التطبيقات طلب
مشفِّر الفيديو لتصدير إحصاءات التشفير لكل إطار فيديو تم تشفيره. باستخدام
الإحصاءات التي يتم الحصول عليها من برنامج ترميز الفيديو، يمكن للتطبيقات تحسين مهام ترميز
الفيديو، مثل الترميز المتعدّد المراحل والمعالجة المسبقة للإطارات قبل
التشفير.
لتصدير إحصاءات ترميز الفيديو، على مورّدي شرائح المنظومة المتكاملة (SoC) تغيير برنامج تشغيل ملف ترميز الفيديو كما هو موضّح في التعديلات على برنامج تشغيل ملف ترميز الفيديو.
بيانات إحصاءات ترميز الفيديو
في Android 13، يصدِّر برنامج ترميز الفيديو بيانات الإحصاءات
كما هو موضَّح في الجدول التالي.
اسم إحصاءات برنامج الترميز |
الوصف |
متوسط معدل الوحدات الكميّة للبلوكات لكل إطار
|
متوسّط جميع قيم QP للكتلة في إطار الفيديو التي يتم تشفيرها في بث البتات
|
نوع الصورة
|
النوع I أو P أو B
|
يمكن للمطوّرين استرداد معلومات الإحصاءات لكل إطار باستخدام فئة المطوّر
MediaFormat
.
تعديلات على برنامج تشغيل برنامج ترميز الفيديو
لتفعيل ميزة تصدير إحصاءات ترميز الفيديو، على مورّدي شرائح المنظومة المتكاملة تغيير
برنامج تشغيل برنامج ترميز الفيديو. تمت إضافة المفاتيح التالية في قاعدة الترميز 2.0 في
Android 13:
يصف KEY_VIDEO_QP_AVERAGE
متوسط QP للوحدة في كل إطار.
تنطبق القواعد التالية على تنفيذ مفتاح KEY_VIDEO_QP_AVERAGE
:
يجب أن يُقرِّب برنامج ترميز SoC متوسط قيم QP للكتلة إلى أقرب
عدد صحيح قبل نقله إلى الترميز 2.0.
لا يتم احتساب متوسط القيمة إلا من مستوى الإضاءة.
يجب أن يعرض برنامج ترميز SoC القيمة INT_MAX
إذا كانت جميع الكتل في الإطار الحالي
في وضع التخطّي. يحدث هذا الشرط عندما لا يتم ترميز أيّ معاملات
ولا يتم ترميز أيّ معلومات مهمة عن QP في الإطار.
KEY_PICTURE_TYPE
يصف نوع الصورة للإطار المشفَّر على النحو التالي: PICTURE_TYPE_I
،
PICTURE_TYPE_P
،
PICTURE_TYPE_B
،
أو PICTURE_TYPE_UNKNOWN
.
يصف KEY_VIDEO_ENCODING_STATISTICS_LEVEL
مستوى
معلومات إحصاءات الترميز الصادرة من برنامج ترميز الفيديو، على النحو التالي:
اطّلِع على VideoEncodingStatisticsTest
للاطّلاع على مثال على التنفيذ.
التحقُّق
يمكنك إجراء اختبار VideoEncodingStatisticsTest
CTS للتأكّد من أنّ متوسط جزء QP من إحصاءات ترميز الفيديو يعمل بشكلٍ سليم: يُجري CTS عمليتَي ترميز للفيديو الوارد نفسه، إحداهما بمعدل نقل بيانات أعلى والأخرى بمعدل نقل بيانات أقل. بعد ذلك، تقارن أداة CTS بين متوسط قيم QP المُصدَّرَين من عمليتَي الترميز. إذا كان متوسّط QP من الترميز
بمعدل البت المنخفض أعلى من متوسّط QP من الترميز بمعدل البت
الأعلى، يتم اجتياز CTS.
للتأكّد من إيقاف ميزة تصدير إحصاءات ترميز الفيديو عند
تفعيلها، استخدِم المفتاح VIDEO_ENCODING_STATISTICS_LEVEL_NONE
على النحو التالي:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Export video encoding statistics\n\nStarting with Android 13, app clients can request the\nvideo encoder to export encoding statistics for each encoded video frame. With\nthe statistics obtained from the video encoder, apps can optimize their video\nencoding tasks such as multipass encoding and frame preprocessing prior to\nencoding.\n\nTo export video encoding statistics, SoC vendors must change the video encoder\ndriver as described in [Updates to the video encoder driver](#updates-encoder).\n\nVideo encoding statistics data\n------------------------------\n\nWith Android 13, the video encoder exports statistics\ndata as shown in the following table.\n\n| Name of encoder statistics | Description |\n|----------------------------|-------------------------------------------------------------------------------------|\n| Average block QP per frame | The average of all block QPs in the video frame that are encoded into the bitstream |\n| Picture type | Type I or P or B |\n\nDevelopers can retrieve statistics information for each frame by using the\n[`MediaFormat`](https://developer.android.com/reference/android/media/MediaFormat)\ndeveloper class.\n\nUpdates to the video encoder driver\n-----------------------------------\n\nTo support the export of video encoding statistics, SoC vendors must change the\nvideo encoder driver. The following keys are added in the Codec 2.0 base in\nAndroid 13:\n\n- [`KEY_VIDEO_QP_AVERAGE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1154) describes the per-frame\n average block QP.\n\n The following rules apply to the implementation of the `KEY_VIDEO_QP_AVERAGE`\n key:\n - The SoC encoder must round the average of the block QPs to the nearest\n integer before emitting to Codec 2.0.\n\n - The average value is computed only from a luma plane.\n\n - The SoC encoder must return `INT_MAX` if all the blocks in the current\n frame are in the skipped mode. This condition occurs when no coefficients are\n encoded and no significant QP info is encoded in the frame.\n\n- [`KEY_PICTURE_TYPE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1163)\n describes the picture type of the encoded frame as [`PICTURE_TYPE_I`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_I),\n [`PICTURE_TYPE_P`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_P),\n [`PICTURE_TYPE_B`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_B),\n or [`PICTURE_TYPE_UNKNOWN`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_UNKNOWN).\n\n- [`KEY_VIDEO_ENCODING_STATISTICS_LEVEL`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1122) describes the level of\n encoding statistics information emitted from video encoder, as follows:\n\n - When the encoder generates no information about encoding statistics,\n this key is set to [`VIDEO_ENCODING_STATISTICS_LEVEL_NONE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1129).\n\n - When the encoder generates `KEY_VIDEO_QP_AVERAGE` and `KEY_PICTURE_TYPE`\n for each frame, this key is set to [`VIDEO_ENCODING_STATISTICS_LEVEL_1`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1136).\n\nSee [`VideoEncodingStatisticsTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/media/codec/src/android/media/codec/cts/VideoEncodingStatisticsTest.java;drc=77bafd18279c8d6dad49fd74dac2e369fdc6ba69;l=56)\nfor a reference implementation.\n\nValidation\n----------\n\nRun the [`VideoEncodingStatisticsTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/media/codec/src/android/media/codec/cts/VideoEncodingStatisticsTest.java;drc=77bafd18279c8d6dad49fd74dac2e369fdc6ba69;l=56)\nCTS test to validate that the average QP part of the video encoding statistics\nworks correctly: CTS runs two encodings of the same input video, one with a\nhigher bitrate, and another with a lower bitrate. CTS then compares the two\nexported average QP values from the two encodings. If the average QP from the encoding\nwith the lower bitrate is higher than the average QP from the encoding with the\nhigher bitrate, CTS passes.\n\nTo validate turning off the exporting video encoding statistics feature when\nenabled, use the `VIDEO_ENCODING_STATISTICS_LEVEL_NONE` key as follows: \n\n format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);"]]