החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
ייצוא נתוני סטטיסטיקה של קידוד וידאו
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
החל מ-Android 13, לקוחות אפליקציות יכולים לבקש ממקודד הווידאו לייצא נתונים סטטיסטיים של קידוד לכל פריים וידאו מקודד. בעזרת הנתונים הסטטיסטיים שמתקבלים ממקודד הווידאו, האפליקציות יכולות לבצע אופטימיזציה של משימות קידוד הווידאו שלהן, כמו קידוד בכמה שלבים ועיבוד מקדים של פריים לפני קידוד.
כדי לייצא נתונים סטטיסטיים של קידוד וידאו, ספקי SoC צריכים לשנות את מנהל ההתקן של מקודד הווידאו, כפי שמתואר בקטע עדכונים למנהל ההתקן של מקודד הווידאו.
נתונים סטטיסטיים של קידוד וידאו
ב-Android 13, מקודד הווידאו מייצא נתונים סטטיסטיים כפי שמתואר בטבלה הבאה.
השם של הנתונים הסטטיסטיים של המקודד |
תיאור |
QP ממוצע של בלוק לכל פריים
|
הממוצע של כל ערכי ה-QP של הבלוק בפריים של הסרטון שמקודדים בזרם הביט
|
סוג התמונה
|
סוג I או P או B
|
מפתחים יכולים לאחזר נתונים סטטיסטיים לכל פריים באמצעות ה-class למפתחים MediaFormat
.
עדכונים במנהל ההתקן של מקודד הווידאו
כדי לתמוך בייצוא של נתונים סטטיסטיים של קידוד וידאו, ספקי SoC צריכים לשנות את מנהל ההתקן של מקודד הווידאו. המפתחות הבאים נוספו בבסיס של Codec 2.0 ב-Android 13:
KEY_VIDEO_QP_AVERAGE
מתאר את הערך הממוצע של QP בבלוק לכל פריים.
הכללים הבאים חלים על ההטמעה של המפתח KEY_VIDEO_QP_AVERAGE
:
מקודד ה-SoC צריך לעגל את הממוצע של ערכי ה-QP של הבלוק ל-integer הקרוב ביותר לפני שהוא פולט ל-Codec 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
.
אימות
מריצים את בדיקת CTS VideoEncodingStatisticsTest
כדי לוודא שחלק ה-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 (שעון UTC).
[[["התוכן קל להבנה","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 (שעון UTC)."],[],[],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);"]]