- 為什麼無法使用試用版應用程式存取本機檔案?
- 為什麼在特定裝置上匯出作業失敗?
- Transformer 是否支援轉換 (或記錄) 遠端媒體
- Transformer 是否支援 8K 輸入?
- Transformer 與平台相容媒體轉碼有何關聯?
- 如何減少匯出延遲或增加處理量?
為什麼我無法存取試用版應用程式中的本機檔案?
自 Android 11 (API 級別 30) 起,強制使用限定範圍儲存空間可防止檔案系統直接存取。如要在開發期間手動測試,您可以在試用版應用程式資訊清單中新增管理外部儲存空間權限,藉此存取本機檔案:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
接著透過 ADB 授予權限:
adb shell appops set --uid androidx.media3.demo.transformer \ MANAGE_EXTERNAL_STORAGE allow
為什麼在特定裝置上匯出失敗?
請在 Media3 Issue Tracker 中回報問題,並提供充足的資訊以便重現問題。您可以在程式庫中新增裝置相關問題的解決方法,以便持續改善相容性。
Transformer 是否支援轉換 (或記錄) 遠端媒體?
Transformer 支援遠端漸進式串流,包括 MP4 等媒體檔案容器。
在極差的網路條件下,匯出可能會失敗,因為在 Muxer 中為了識別管道停滯問題,而對遠端媒體進行長時間的檢查而觸發檢查。您可以在 Transformer.Builder
上設定 maxDelayBetweenMuxerSamplesMs
來覆寫預設行為:
Kotlin
Transformer.Builder(context) .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET) .build()
Java
new Transformer.Builder(context) .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET) .build();
傳入 C.TIME_UNSET
會完全移除逾時,但如果應用程式在晶片組上執行,且 MediaCodec
可能會卡住,建議您設定較大的非零逾時時間。
Transformer 是否支援 8K 輸入?
Transformer 是以各格式的方式實作,因此不一定會限制 8K 影片處理,但裝置上的硬體功能可能表示無法匯出。舉例來說,即使裝置能夠擷取 8k,但由於可用硬體轉碼器或 RAM 資源超出可用上限,系統可能無法解碼並重新編碼 8K 影片。
Transformer 與平台相容媒體轉碼有何關聯?
相容媒體轉碼是 Android 12 (API 級別 31) 的 Android 平台功能,可將中一分鐘的媒體轉換成應用程式支援的格式。如果您選擇採用這項功能,系統就會在需要時以不相容的格式讀取媒體檔案,並將結果快取處理供之後讀取。
Transformer 也支援格式轉換,但這可做為支援資料庫使用,而且應用程式可完全控管轉碼作業。
如何減少匯出延遲或增加處理量?
Transformer 仰賴硬體加速和編碼的 MediaCodec
以及 OpenGL 處理視訊影格。根據我們在一般裝置的測量結果,Transformer 的處理量限制係數是針對未使用高權重影響處理用途的硬體 MediaCodec
編碼器處理量。如此一來,其他導入的導入方式就有可能會受到影響。例如,平台相容轉碼功能的效能與 Transformer 類似。
試用版應用程式的偵錯預覽功能會大幅降低處理量,因此在使用試用版應用程式的發布子版本進行測試時,請關閉預覽功能,真正瞭解效能。