2017-10-09 125 views
0

我有兩個音頻文件和 我想要使用java codding或任何java音頻聲音API來加入這兩個音頻文件。如何在java中合併兩個mp3文件?

String wavFile1 = "D://SampleAudio_0.4mb.mp3"; 
    String wavFile2 = "D://wSampleAudio_0.7mb.mp3"; 
    AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(wavFile1)); 
    AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2)); 

    AudioInputStream appendedFiles = 
        new AudioInputStream(
         new SequenceInputStream(clip1, clip2),  
         clip1.getFormat(), 
         clip1.getFrameLength() + clip2.getFrameLength()); 

    AudioSystem.write(appendedFiles, 
        AudioFileFormat.Type.WAVE, 
        new File("D://merge1.mp3")); 

我得到以下異常:

javax.sound.sampled.UnsupportedAudioFileException:在javax.sound.sampled.AudioSystem.getAudioInputStream無法從輸入文件音頻輸入流(來源不明)

+1

上述代碼有什麼問題。請詳細解釋。 –

+0

javax.sound.sampled.UnsupportedAudioFileException:無法從輸入文件獲取音頻輸入流 \t at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source) –

回答

0

得到了解決方案,它是爲我工作。

String wavFile1 = "C:\\1.mp3"; 
String wavFile2 = "C:\\2.mp3"; 
FileInputStream fistream1 = new FileInputStream(wavFile1); // first source file 
FileInputStream fistream2 = new FileInputStream(wavFile2);//second source file 
SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2); 
FileOutputStream fostream = new FileOutputStream("D://merge1.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

我覺得.7mb.mp3是公認的.7mb擴展。確保這不會導致問題。嘗試重命名文件是這樣的:

來源:

String wavFile1 = "D://SampleAudio_0.4mb.mp3"; 
String wavFile2 = "D://wSampleAudio_0.7mb.mp3"; 

要:

String wavFile1 = "D://SampleAudio_01.mp3"; 
String wavFile2 = "D://wSampleAudio_02.mp3"; 

更新

我沒有看到,你已經回答了這個問題,但我認爲值得關注未來的擴展。