После обширных исследований предмета я достиг кирпичной стены.Преобразование байтового массива в файл 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);
}
Звуковые файлы должны быть одного формата (например, 22500 кГц, моно, 8 бит). Они также должны иметь одинаковую кодировку (например, a-law или pcm). Класс AudioSystem предоставляет способы преобразования между определенными типами потоков/форматов. Посмотрите на это. –
Даже если они были одного формата, просто их объединение не будет работать, потому что wav-файлы имеют заголовок ... и их объединение приведет к тому, что заголовки появятся неожиданно посередине файла. – Powerlord
Он сказал, что пропустил заголовок. – AHungerArtist