在android中顺序合并2个音频文件?

Riy*_*yas 4 java android

如何将两个音频文件合并到android平台中的单个文件中.也就是说,如果我有两个音频文件,即A和B.请给我代码来创建一个新的音频文件C,在A之后由B附加.是否需要将音频文件转换为字节/短数组? ..

我确实喜欢这个,但它只播放第一个文件.

            File firstFile=new File("/mnt/sdcard/Android/data/Dictation/Audio/Dict136.3gp");

            File secondFile=new File("/mnt/sdcard/Android/data/Dictation/Audio/Dict139.3gp");

            System.out.println("1 file:::::"+firstFile+"\n 2nd file::"+secondFile);


           FileInputStream fistream1;
        try {
            fistream1 = new FileInputStream(firstFile);
            FileInputStream fistream2 = new FileInputStream(secondFile);//second source file



            SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
            FileOutputStream fostream = new FileOutputStream("/mnt/sdcard/Android/data/Dictation/Audio/merged.3gp");//destinationfile

            int temp;

            while( ( temp = sistream.read() ) != -1)
            {
                System.out.print( (char) temp ); // to print at DOS prompt
                fostream.write(temp);   // to write to file
            }



            filePath="/mnt/sdcard/Android/data/Dictation/Audio/merged.3gp";
            playAudio(filePath);


            fostream.close();
            fistream1.close();
            fistream2.close();
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Mat*_*lfe 7

要组合3gp或mp4容器中的音频文件,您应该可以使用https://github.com/sannies/mp4parser 查看示例:https: //github.com/sannies/mp4parser/blob/master/实例/ SRC /主/ JAVA/COM/googlecode上/ mp4parser/AppendExample.java

得到mp4parser jar(通过maventral)并执行此操作:

        File firstFile=new File("/mnt/sdcard/Android/data/Dictation/Audio/Dict136.3gp");
        File secondFile=new File("/mnt/sdcard/Android/data/Dictation/Audio/Dict139.3gp");

        Movie movieA = MovieCreator.build(firstFile);
        Movie movieB = MovieCreator.build(secondFile);
        final Movie finalMovie = new Movie();

        List<Track> audioTracks = new ArrayList<>();
        for (Movie movie : new Movie[] { movieA, movieB}) {
            for (Track track : movie.getTracks()) {
                if (track.getHandler().equals("soun")) {
                    audioTracks.add(track);
                }
            }
        }
        finalMovie.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));

        final Container container = new DefaultMp4Builder().build(finalMovie);
        File mergedFile = new File("/mnt/sdcard/Android/data/Dictation/Audio/merged.3gp");
        final FileOutputStream fos = new FileOutputStream(mergedFile);
        FileChannel fc = new RandomAccessFile(mergedFile, "rw").getChannel();
        container.writeContainer(fc);
        fc.close();
Run Code Online (Sandbox Code Playgroud)