zl程序教程

您现在的位置是:首页 >  Java

当前栏目

如何在java中合并两个mp3文件?

2023-04-18 13:03:58 时间

我有两个音频文件和 我想要使用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无法从输入文件音频输入流(来源不明)

Sajan Parmar

上述代码有什么问题。请详细解释。 –

javax.sound.sampled.UnsupportedAudioFileException:无法从输入文件获取音频输入流 at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source) –

回答

得到了解决方案,它是为我工作。

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(); 

我觉得.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"; 

更新

我没有看到,你已经回答了这个问题,但我认为值得关注未来的扩展。

如何在java中合并两个mp3文件?