我正在编写一个Android项目,我正在录制几个音频文件。因此,我正在设置以下参数。录音工作正常。
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
我的问题是每次录制时,输出都写在一个单独的文件中。现在,我需要将这些文件合并到一个文件中。有没有人知道如何在Android项目中组合几个MPEG 4文件?
感谢您的帮助......
答案 0 :(得分:8)
我建议使用我的mp4parser库,然后您不必处理本机库。看看AppendExample。它完全符合您的要求。留意最新版本。 请参阅下面的AppendExample以了解它是如何工作的。
Movie[] inMovies = new Movie[]{MovieCreator.build(Channels.newChannel(AppendExample.class.getResourceAsStream("/count-deutsch-audio.mp4"))),
MovieCreator.build(Channels.newChannel(AppendExample.class.getResourceAsStream("/count-english-audio.mp4")))};
List<Track> videoTracks = new LinkedList<Track>();
List<Track> audioTracks = new LinkedList<Track>();
for (Movie m : inMovies) {
for (Track t : m.getTracks()) {
if (t.getHandler().equals("soun")) {
audioTracks.add(t);
}
if (t.getHandler().equals("vide")) {
videoTracks.add(t);
}
}
}
Movie result = new Movie();
if (audioTracks.size() > 0) {
result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
}
if (videoTracks.size() > 0) {
result.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()])));
}
IsoFile out = new DefaultMp4Builder().build(result);
FileChannel fc = new RandomAccessFile(String.format("output.mp4"), "rw").getChannel();
fc.position(0);
out.getBox(fc);
fc.close();
答案 1 :(得分:1)
在android中没有任何内置功能可以组合两个音频文件,如果你是通过任何文件操作完成的,那么这也可以工作,因为它不能用作音频文件的标题不同。
我建议您为Android应用程序使用外部库FFMPEG。