2010-11-09 3 views
4

После обширных исследований предмета я достиг кирпичной стены.Преобразование байтового массива в файл Wav

Все, что я хочу сделать, это добавить коллекцию .wav-файлов в массив байтов один за другим и вывести их все в один полностью созданный WAV-файл. Я извлекаю все данные .wav в массив байтов, пропуская заголовок .wav и направляясь прямо к данным, а затем, когда дело доходит до написания его во вновь созданном .wav-файле, я получаю ошибку, например: Error1: javax.sound .sampled.UnsupportedAudioFileException: не может получить входной поток аудио из входного потока Error2: не может получить входной поток аудио из входного потока

код:

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

    } 
+0

Звуковые файлы должны быть одного формата (например, 22500 кГц, моно, 8 бит). Они также должны иметь одинаковую кодировку (например, a-law или pcm). Класс AudioSystem предоставляет способы преобразования между определенными типами потоков/форматов. Посмотрите на это. –

+0

Даже если они были одного формата, просто их объединение не будет работать, потому что wav-файлы имеют заголовок ... и их объединение приведет к тому, что заголовки появятся неожиданно посередине файла. – Powerlord

+1

Он сказал, что пропустил заголовок. – AHungerArtist

ответ

-1

Ваш массив не содержит заголовок информация, которая, вероятно, означает, что AutoSystem.write не считает, что это действительно WAV-данные.

Можете ли вы создать подходящий заголовок для комбинированных данных?

Обновление: This вопрос может содержать ответ для вас.

+1

Спасибо, Ричард, это может быть самое близкое к ответу, который я могу найти. Я смущаюсь о создании и размещении заголовков wav при разделении файлов. – user501861

+1

Связанный вопрос не касается байт-массивов вообще? Вы не ответили на вопрос, просто сказали ему, почему он не работает (что он уже знал). Почему это так сложно найти ответ? – CpILL

Смежные вопросы