Android音視頻處理之MediaMuxer

MediaMuxer用來產生一個混合的音頻和視頻的多媒體文件。缺點是,如今能夠只支持一個audio track而一個video track,而惟一支持mp4出口。


  • 首先經過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對象的值必定要設置正確
bash

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

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

muxer.stop();
muxer.release();複製代碼

參考文章:ide

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

相關文章
相關標籤/搜索