2011-07-18 53 views
11

任何可以告訴你怎麼結合/合併兩個媒體文件合併成一個?如何將兩個mp3文件合併成一個(組合/加入)

我發現了一個約audioInputStream話題,但現在它不是在Android的支持,以及對Java所有代碼。

而且在計算器上我發現這裏這個鏈接 但我不能找到解決辦法 - 這些鏈接只在音頻流。任何人都可以告訴我?

PS爲什麼我不能啓動賞金:(

+1

對於頁面:問題還沒有2天;在這裏閱讀更多:http://meta.stackexchange.com/questions/54994/what-would-prevent-me-from-adding-a-bounty-to-a-question/54996#54996 – Adinia

+1

嗨,我想兩個合併兩個MP3音頻文件合併爲一個文件。如果你知道如何合併幫助我。預先提問 – sandeep

回答

4

考慮兩種情況.mp3文件:

  • 文件與相同的取樣頻率和聲道數量

在這種情況下,我們可以將第二個文件附加到第一個文件的末尾,這可以通過使用Android上的File類來實現。

  • 文件具有不同的採樣頻率或信道的數目。

在這種情況下,其中一個剪輯必須重新編碼,以確保兩個文件具有相同的採樣頻率和通道數。爲此,我們需要解碼MP3,獲取PCM採樣,處理它以改變採樣頻率,然後重新編碼爲MP3。據我所知,android沒有轉碼或重新編碼API。一種選擇是通過JNI使用外部庫像lame/FFMPEG進行重新編碼。

+0

不,這不是幫助我:(我想我會等待2天,而不是開始賞金..也許人們可以幫助 – Peter

+0

@Peter,你能解釋一下你想要合併的媒體文件格式嗎? –

+0

mp3。我不需要將一個文件附加到其他文件。需要兩個聲音(例如:firts文件:1分35秒)合併成一個:|?從我明白了什麼,你要合併 – Peter

10
import java.io.*; 
public class TwoFiles 
{ 
    public static void main(String args[]) throws IOException 
    { 
     FileInputStream fistream1 = new FileInputStream("C:\\Temp\\1.mp3"); // first source file 
     FileInputStream fistream2 = new FileInputStream("C:\\Temp\\2.mp3");//second source file 
     SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2); 
     FileOutputStream fostream = new FileOutputStream("C:\\Temp\\final.mp3");//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 
     } 
     fostream.close(); 
     sistream.close(); 
     fistream1.close(); 
     fistream2.close(); 
    } 
} 
+0

是互相追加音頻還是混音? –

+0

@ArslanAhmad這是爲了追加音頻。 SequenceInputStream是此代碼的核心部分。 SequenceInputStream連接文檔中提到的兩個FileInputStream。此代碼不會混合,而是會加入。 –

+0

@shiva我使用相同的代碼,但不適合我這裏是我的問題鏈接幫助我。 http:// stackoverflow。com/questions/35340025/how-to-merge-two-or-more-mp3-audio-file-in-android –