FFmpeg開發筆記(五十七)使用Media3的Transformer加工視頻文件
?繼音視頻播放器ExoPlayer之后,谷歌又推出了音視頻轉換器Transformer,要在音視頻加工領域施展拳腳。根據Android開發者官網介紹:Jetpack Media3是Android媒體庫的新家,可讓App呈現豐富的視聽體驗。Media3提供了一個簡單的架構,能夠基于設備功能開展自定義與可靠性優化,可以解決媒體部分的碎片化問題。
Transformer作為Media3架構中的轉換組件,可以用于編輯加工音視頻,包括在不同格式之間轉換編碼與修改媒體內容,例如從較長的視頻剪輯片段、或者應用自定義的濾鏡效果,以及其他音視頻編輯操作等等。
谷歌官方也提供了Transformer的代碼應用例子,示例源碼的托管地址為https://github.com/androidx/media/tree/release/demos,托管頁面打開之后訪問transformer目錄,即可找到Transformer組件的實際運用模塊代碼。
因為Transformer被Media3囊括在內,所以它對運行環境要求頗高,具體環境要求參見之前的文章《使用Media3的Exoplayer播放網絡視頻》。準備好了開發環境之后,再按照以下描述引入Media3的ExoPlayer庫,詳細步驟說明如下。
一、修改模塊的build.gradle
在build.gradle的dependencies節點內部補充下面的導包語句,把Transformer用到的相關庫都加進來。
二、活動頁面代碼增加Transformer的處理代碼
首先創建音視頻的時間處理效果,比如下面代碼構建了一個剪輯視頻片段的媒體項目,準備把視頻文件的第10秒到第20秒單獨剪輯出來。
接著創建音視頻的空間處理效果,包括旋轉、縮放視頻畫面等等,并對上一步的媒體項目運用指定的空間效果。創建代碼如下:
然后按照以下代碼構建轉換器對象,指定輸出視頻格式為H265,輸出音頻格式為AAC,并且監聽轉換操作的結束事件和失敗事件。構建代碼如下:
最后填寫輸出文件的保存路徑,調用轉換器對象的start方法,開始執行音視頻轉換動作。轉換代碼如下:
編譯運行App,即可在真機上選取視頻文件并執行對應的編輯加工操作。
更多詳細的FFmpeg開發知識參見
?
浙公網安備 33010602011771號