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