媒體轉碼器

從 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() 會傳回空值。