Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release
, bukan aosp-main
, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Mengekspor statistik encoding video
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Mulai Android 13, klien aplikasi dapat meminta
encoder video untuk mengekspor statistik encoding untuk setiap frame video yang dienkode. Dengan
statistik yang diperoleh dari encoder video, aplikasi dapat mengoptimalkan tugas
encoding video seperti encoding multi-pass dan prapemrosesan frame sebelum
encoding.
Untuk mengekspor statistik encoding video, vendor SoC harus mengubah driver encoder
video seperti yang dijelaskan dalam Pembaruan pada driver encoder video.
Data statistik encoding video
Dengan Android 13, encoder video mengekspor data
statistik seperti yang ditunjukkan dalam tabel berikut.
Nama statistik encoder |
Deskripsi |
QP blok rata-rata per frame
|
Rata-rata semua QP blok dalam frame video yang dienkode ke dalam bitstream
|
Jenis gambar
|
Ketik I atau P atau B
|
Developer dapat mengambil informasi statistik untuk setiap frame menggunakan class developer
MediaFormat
.
Update pada driver encoder video
Untuk mendukung ekspor statistik encoding video, vendor SoC harus mengubah
driver encoder video. Kunci berikut ditambahkan di dasar Codec 2.0 di
Android 13:
KEY_VIDEO_QP_AVERAGE
menjelaskan QP blok
rata-rata per frame.
Aturan berikut berlaku untuk penerapan kunci KEY_VIDEO_QP_AVERAGE
:
Encoder SoC harus membulatkan rata-rata QP blok ke bilangan bulat terdekat
sebelum memunculkan ke Codec 2.0.
Nilai rata-rata hanya dihitung dari bidang luma.
Encoder SoC harus menampilkan INT_MAX
jika semua blok dalam frame
saat ini berada dalam mode dilewati. Kondisi ini terjadi jika tidak ada koefisien
yang dienkode dan tidak ada info QP signifikan yang dienkode dalam frame.
KEY_PICTURE_TYPE
menjelaskan jenis gambar frame yang dienkode sebagai PICTURE_TYPE_I
,
PICTURE_TYPE_P
,
PICTURE_TYPE_B
,
atau PICTURE_TYPE_UNKNOWN
.
KEY_VIDEO_ENCODING_STATISTICS_LEVEL
menjelaskan tingkat
informasi statistik encoding yang dikeluarkan dari encoder video, sebagai berikut:
Lihat VideoEncodingStatisticsTest
untuk implementasi referensi.
Validasi
Jalankan pengujian CTS VideoEncodingStatisticsTest
untuk memvalidasi bahwa bagian QP rata-rata dari statistik encoding video
berfungsi dengan benar: CTS menjalankan dua encoding dari video input yang sama, satu dengan
bitrate yang lebih tinggi, dan satu lagi dengan bitrate yang lebih rendah. CTS kemudian membandingkan dua
nilai QP rata-rata yang diekspor dari dua encoding. Jika QP rata-rata dari encoding
dengan kecepatan bit yang lebih rendah lebih tinggi dari QP rata-rata dari encoding dengan
kecepatan bit yang lebih tinggi, CTS akan lulus.
Untuk memvalidasi penonaktifan fitur statistik encoding video ekspor saat
diaktifkan, gunakan kunci VIDEO_ENCODING_STATISTICS_LEVEL_NONE
sebagai berikut:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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);"]]