MP4文件中没有音频 - Android

时间:2015-05-14 06:27:18

标签: java android audio mp4parser

我正在使用MP4ParserMergeAudioVideoMP4文件添加新音频。该库曾说过要使用.wav文件,如果我在目录中保留一个.wav文件,并将音频文件的名称设为example.m4a,我会收到一个未找到文件的异常。所以我将文件更改为.m4a音频文件。代码如下。

findViewById(R.id.append).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        String root = Environment.getExternalStorageDirectory().toString();
        Log.e("",""+root);
        String audio = root + "/download/"+"mymovieaudio.m4a";
        String video = root + "/download/"+"My_Movie.mp4";
        String output = root + "/download/ouput.mp4";
        mux(video, audio, output);
    }
});

多路复用功能就像这样

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;
    }

我成功获取了设备下载目录中的output.mp4文件。问题是它没有任何音频。请帮忙。提前谢谢。

0 个答案:

没有答案