使用RandomAccessFile进行音频附加

问题描述

| 我使用以下代码将sdcard中存在的多个wav文件附加到单个文件。 audFullPath是一个数组列表,其中包含音频文件的路径。这是对的吗。完成此操作后,当我播放recordedaudio1时。它只播放第一个文件。我想播放所有文件。任何建议..
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”个文件。那是因为每个ѭ1都有特殊格式: 最简单的
WAV
文件如下所示:
[RIFF HEADER]
...
totalFileSize    

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

[DATA CHUNK]
dataSize
<audio data>
您需要做的是: 确保所有“ 1”文件兼容:相同的音频格式,频率,每个样本的位数,通道数等。 创建总文件大小正确的
RIFF
头 创建适当的
FMT
标题 用总的音频数据大小创建正确的
DATA
标题 该算法绝对适用于LPCM,ULAW,ALAW音频格式。不确定其他人。