将音频与视频相结合 - Android

时间:2015-01-27 10:55:41

标签: android

我正在开发一款应用程序来捕获视频和下载音频。我可以单独保存这些文件,但找不到合并这些文件的方法来制作带有音频的新视频。

视频文件采用.mp4格式,音频采用.mp3格式。它们的长度完全相同。

有没有办法合并这些文件?我试过但找不到合并两个文件的方法。

我也可以使用FFMPEG,但没有得到任何最好的方法来实现它。请帮帮我,我是android的新手。

1 个答案:

答案 0 :(得分:2)

我认为MP4Parser库适合这种情况。我找到了以下示例代码,将音频和视频合并到此链接Video Recording And Processing In Android中的单个mp4文件中。

public class Mp4ParserAudioMuxer implements AudioMuxer {
    @Override
    public boolean mux(String videoFile, String audioFile, String outputFile) {
        Movie video;
        try {
            video = new MovieCreator().build(videoFile);
        } catch (RuntimeException e) {
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }

        Movie audio;
        try {
            audio = new MovieCreator().build(audioFile);
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } catch (NullPointerException e) {
            e.printStackTrace();
            return false;
        }

        Track audioTrack = audio.getTracks().get(0);
        video.addTrack(audioTrack);

        Container out = new DefaultMp4Builder().build(video);

        FileOutputStream fos;

        try {
            fos = new FileOutputStream(outputFile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return false;
        }

        BufferedWritableFileByteChannel byteBufferByteChannel = 
            new BufferedWritableFileByteChannel(fos);

        try {
            out.writeContainer(byteBufferByteChannel);
            byteBufferByteChannel.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }
}

如果您考虑通过ffmpeg进行此操作,可以使用static ffmpeg binariesyou need to build it