從 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
是否涵蓋另一個範圍。舉例來說,UHD_60.covers(UHD_50)
會傳回 true。
系統會針對所有硬體加速轉碼器提供效能點清單。如果轉碼器未達到最低標準效能點,這可能為空白清單。
請注意,如果裝置在未更新供應商映像檔的情況下升級至 Android 10 (API 級別 29) 以上版本,就不會有效能點資料,因為這項資料來自供應商 HAL。在這種情況下,getSupportedPerformancePoints()
會傳回空值。