Добавление аудио с использованием RandomAccessFile - PullRequest
1 голос
/ 30 мая 2011

Я использую следующий код, чтобы добавить как можно больше файлов wav, присутствующих на SD-карте, в один файл.audFullPath - это массив, содержащий путь аудиофайлов.Это правильно.Когда я играю записанный аудио1, после этого.Воспроизвести только первый файл.Я хочу воспроизвести все файлы.Любое предложение ..

File file=new File("/sdcard/AudioRecorder/recordedaudio1.wav");

RandomAccessFile raf = new RandomAccessFile(file, "rw");

for(int i=0;i<audFullPath.size();i++) {
    f=new File(audFullPath.get(i));      
    fileContent = new byte[(int)f.length()];
    System.out.println("Filecontent"+fileContent);
    raf.seek(raf.length()); 
    raf.writeBytes(audFullPath.get(i));
}

1 Ответ

4 голосов
/ 30 мая 2011

Вы не можете добавлять WAV файлы так, как вы это делаете.Это потому, что каждый WAV имеет специальный формат:

Самый простой из возможных WAV файл выглядит следующим образом:

[RIFF HEADER]
...
totalFileSize    

[FMT CHUNK]
...
audioFormat
frequency
bytesPerSample
numberOfChannels
...

[DATA CHUNK]
dataSize
<audio data>

Что вам нужно сделать, это:

  1. Убедитесь, что все файлы WAV совместимы: одинаковый аудиоформат, частота, биты на выборку, количество каналов и т. Д.
  2. Создайте правильный заголовок RIFF с общим размером файла
  3. Создать правильный FMT заголовок
  4. Создать правильный DATA заголовок с общим размером аудиоданных

Этот алгоритм определенно будет работать для аудиоформатов LPCM, ULAW, ALAW.Не уверен насчет других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...