Android音視訊處理之MediaMuxer

DroidMind發表於2018-11-06
MediaMuxer用來產生一個混合的音訊和視訊的多媒體檔案。缺點是,現在可以只支援一個audio track而一個video track,而唯一支援mp4出口。

Android音視訊處理之MediaMuxer

  • 首先通過new MediaMuxer(String path, int format)指定視訊檔案輸出路徑和檔案格式

muxer = new MediaMuxer(outputFile.getAbsolutePath(),
                       MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);
複製程式碼

  • 接著,就是addTrack(MediaFormat format),新增媒體通道,該函式需要傳入MediaFormat物件,通常從MediaExtractor或者MediaCodec中獲取。

audioTrackIndex = muxer.addTrack(audioEncoder.getOutputFormat());
videoTrackIndex = muxer.addTrack(videoEncoder.getOutputFormat());
複製程式碼

  • 新增完所有track後呼叫start方法,開始音視訊合成

muxer.start();
複製程式碼

開始之後,就可以呼叫MediaMuxer.writeSampleData()向mp4檔案中寫入資料了。需要注意每次只能新增一幀視訊資料或者單個Sample的音訊資料,並且BufferInfo物件的值一定要設定正確

muxer.writeSampleData(audioTrackIndex, encodedData, bufferInfo);
muxer.writeSampleData(videoTrackIndex, encodedData, bufferInfo);
複製程式碼

  • 合成結束之後關閉以及釋放資源

muxer.stop();
muxer.release();複製程式碼

參考文章:

https://www.jianshu.com/p/aeadf260258a


相關文章