1.音频合并,取视频1的是视频,视频2的音频合成一个新的视频
MediaExtractor作用是将视频分离
MediaMuxer作用是将音频和视频合成新的音频
MediaExtractor步骤:
1.设置数据源
mediaExtractor.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/ss/" + "2.mp4");
2.获取通道数,切换到想要的轨道
int trackCount = mediaExtractor.getTrackCount();
for (int i = 0; i < trackCount; i++) {
MediaFormat trackFormat = mediaExtractor.getTrackFormat(i);
String mimeType = trackFormat.getString(MediaFormat.KEY_MIME);
// 取出视频的信号
if (mimeType.startsWith("video/")) {
videoIndex = i;
}
if (mimeType.startsWith("audio/")) {
audioIndex = i;
}
}
3.循环读取每帧的样本数据
while (true) {
//读取帧之间的数据
int readSampleSize = mediaExtractor.readSampleData(byteBuffer_video, 0);
if (readSampleSize < 0) {
break;
}
mediaExtractor.advance();
bufferInfo_video.size = readSampleSize;
bufferInfo_video.offset = 0;
bufferInfo_video.flags = mediaExtractor.getSampleFlags();
bufferInfo_video.presentationTimeUs += videoSampleTime;
}
4.完成后释放资源
mediaExtractor.release();
MediaMuxer步骤:
1.设置目标文件路径和音视频格式
mediaMuxer = new MediaMuxer(SDCARD_PATH + "/output_video55.mp4", MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);
2.添加要合成的轨道,包括音轨和视轨
mediaMuxer