6

私はいくつかのオーディオ ファイルを録音している Android プロジェクトを書いています。したがって、次のパラメーターを設定しています。録音は問題なく動作します。

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

私の問題は、記録するたびに、出力が別のファイルに書き込まれることです。ここで、これらのファイルを 1 つのファイルに結合する必要があります。Android プロジェクトで複数の MPEG 4 ファイルを組み合わせる方法を知っている人はいますか?

ご協力いただきありがとうございます....

4

2 に答える 2

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();
于 2012-07-18T23:27:31.670 に答える
1

Androidには、2つのオーディオファイルを組み合わせるための組み込み機能はありません。ファイル操作を行った場合、オーディオファイルのヘッダーとして機能しないため、これも機能します。

Androidアプリケーションには外部ライブラリFFMPEGを使用することをお勧めします。

于 2012-06-18T13:28:28.630 に答える