經過對該主題的深入研究後,我到達了一堵磚牆。將字節數組轉換爲Wav文件
我想要做的就是將一組.wav文件逐個添加到字節數組中,並將它們全部輸出到一個完整的新創建的.wav文件中。我將所有.wav數據提取到一個字節數組中,跳過.wav頭並直接進行數據處理,然後將它寫入新創建的.wav文件時,出現如下錯誤: Error1:javax.sound .sampled.UnsupportedAudioFileException:無法從輸入流 誤差2獲得音頻輸入流:無法從輸入流中獲得音頻輸入流
的代碼是:
try
{
String path = "*********";
String path2 = path + "newFile.wav";
File filePath = new File(path);
File NewfilePath = new File(path2);
String [] folderContent = filePath.list();
int FileSize = 0;
for(int i = 0; i < folderContent.length; i++)
{
RandomAccessFile raf = new RandomAccessFile(path + folderContent[i], "r");
FileSize = FileSize + (int)raf.length();
}
byte[] FileBytes = new byte[FileSize];
for(int i = 0; i < folderContent.length; i++)
{
RandomAccessFile raf = new RandomAccessFile(path + folderContent[i], "r");
raf.skipBytes(44);
raf.read(FileBytes);
raf.close();
}
boolean success = NewfilePath.createNewFile();
InputStream byteArray = new ByteArrayInputStream(FileBytes);
AudioInputStream ais = AudioSystem.getAudioInputStream(byteArray);
AudioSystem.write(ais, Type.WAVE, NewfilePath);
}
聲音文件需要全部格式(例如22500 KHz,單聲道,8位)。它們也需要是相同的編碼(例如a-law或pcm)。 AudioSystem類提供了在特定類型的流/格式之間進行轉換的方法。研究一下。 – 2010-11-09 13:47:28
即使它們都是相同的格式,簡單地連接它們將不起作用,因爲wav文件有一個標題...並將它們連接起來會使標題意外出現在文件的中間。 – Powerlord 2010-11-09 15:45:31
他確實說過他跳過了標題。 – AHungerArtist 2010-11-09 18:00:04