從 Android 10 (API 級別 29) 以上版本開始,MediaCodecInfo
中提供的方法可揭露編解碼器的更多資訊:
isSoftwareOnly()
- 如果編解碼僅在軟體中執行,則傳回 true。軟體編碼器無法保證轉譯效能。
isHardwareAccelerated()
- 如果編解碼器已由硬體加速,則傳回 true。
isVendor()
- 如果編解碼是由裝置供應商提供,則傳回 true;如果是由 Android 平台提供,則傳回 false。
isAlias()
MediaCodecList
可能會包含使用替代編碼器名稱/別名 (編碼器別名) 的相同基礎編碼器的其他項目。如果這個項目中的編解碼是其他編解碼的別名,這個方法會傳回 true。
此外,MediaCodec.getCanonicalName()
會針對透過別名建立的編解碼,傳回基礎編解碼名稱。
效能積分
效能點代表轉碼器以特定高度、寬度和畫面更新率算繪影片的能力。舉例來說,UHD_60
效能點代表以每秒 60 張影格呈現的超高畫質影片 (3840x2160 像素)。
MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
方法會傳回編解碼器可轉譯或擷取的 PerformancePoint
項目清單。
您可以呼叫 PerformancePoint.covers(PerformancePoint)
,檢查特定 PerformancePoint
是否涵蓋另一個 PerformancePoint
。舉例來說,UHD_60.covers(UHD_50)
會傳回 true。
系統會為所有硬體加速編解碼器提供效能點清單。如果轉碼器連最低標準的效能點都達不到,這份清單可能會是空白。
請注意,如果裝置已升級至 Android 10 (API 級別 29) 以上版本,但未更新供應商映像檔,則不會有效能點資料,因為這類資料來自供應商 HAL。在這種情況下,getSupportedPerformancePoints()
會傳回空值。