mp4音频是由视频和音频组成,Android 提供了 MediaExtractor 和 MediaMuxer 以及MediaFormat类,用来把音频或视频单独抽取出来,然后合成新的视频。下面分别介绍视频的分解和合成,效果如下:

一、视频的分解
1、设置数据源获取音轨数据
MediaExtractor extractor = new MediaExtractor();
try {
//设置数据源
extractor.setDataSource(file.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
//获取轨道数量
trackCount = extractor.getTrackCount();
2、遍历音轨数量,得到想要的轨道
//查找需要的视频轨道与音频轨道index
for (int i = 0; i < trackCount; i++) {
//遍历所以轨道
MediaFormat itemMediaFormat = extractor.getTrackFormat(i);
String itemMime = itemMediaFormat.getString(MediaFormat.KEY_MIME);
if (itemMime.startsWith("video")) {
//获取视频轨道位置
videoTrackIndex = i;
videoMediaFormat = itemMediaFormat;
continue;
}
if (itemMime.startsWith("audio")) {
//获取音频轨道位置
audioTrackIndex = i;
audioMediaFormat = itemMediaFormat;
continue;
}
}
3、创建输出音视频文件夹
File videoFile = new File(videoPath);
File audio

本文详细介绍如何使用Android的MediaExtractor、MediaMuxer及MediaFormat类实现视频的音视频分离与合成。从数据源设置到音视频轨道的获取,再到输出文件的创建与数据写入,提供完整的代码示例。并解释了视频合成过程中的同步写入技巧。
最低0.47元/天 解锁文章
590





