- 首先通過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