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開發知識參見