2012-06-18 37 views
6

我正在編寫一個Android項目,我正在錄製多個音頻文件。因此,我設置了以下參數。錄音工作正常。Android - 結合兩個MP4文件

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

我的問題是,每次我記錄時,輸出都寫在一個單獨的文件中。現在,我需要將這些文件合併到一個文件中。有沒有人有一個想法如何在Android項目中結合幾個MPEG 4文件?

感謝您的幫助....

+0

你想結合MP4文件或音頻與MP4文件? – Dinesh

+0

http://stackoverflow.com/questions/8268195/strange-issue-in-combining-audio-files-and-playing-in-different-api-versions – Venky

+0

http://stackoverflow.com/questions/8243947/best -way-to-combine-audio-files-in-android – Venky

回答

1

在Android中沒有對合並兩個音頻文件,如果你通過任何文件操作做到了,那麼也下來,因爲它不工作作爲工作的任何內在功能音頻文件的標題是不同的。

我建議使用外部庫FFMPEG爲您的Android應用程序。

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

我已經把isoviewer-2.0-RC-22.jar庫,和我複製代碼說它AppendExample.class不存在,我必須創建它,還是從庫? –

+1

你不需要它。我只是用它來訪問類路徑 –

+0

對於超過2個文件,mp4parser庫不能在android上工作! – Alin