使用RandomAccessFile附加音频
问题描述:
我使用以下代码将SD卡中存在的许多wav文件附加到单个文件中。 audFullPath是一个包含音频文件路径的数组列表。这是对的吗。当我播放录制的音频1时,在这之后。它只播放第一个文件。我想播放所有的文件。任何建议..使用RandomAccessFile附加音频
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));
}
答
您不能追加WAV
文件你的方式。这是因为每个WAV
有特殊格式:
最简单的WAV
文件看起来像这样:
[RIFF HEADER]
...
totalFileSize
[FMT CHUNK]
...
audioFormat
frequency
bytesPerSample
numberOfChannels
...
[DATA CHUNK]
dataSize
<audio data>
你需要做的是:
- 确保所有
WAV
文件的兼容:相同的AudioFormat,频率,每个样品,通道数等 - 比特创建适当
RIFF
头与总文件大小 - 创建适当
FMT
头 - 创建适当
DATA
头总音频数据大小
这算法肯定会为LPCM,ULAW,ALAW音频格式工作。不确定其他人。
谢谢,ü可以建议我任何有用的链接... – Manikandan 2011-05-31 08:33:43
请问我的方法适用于PCM文件... – Manikandan 2011-05-31 08:45:09
它将为PCM工作。 WAV文件格式在这里描述:http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/wave.html;还有:http://www.sonicspot.com/guide/wavefiles.html。 – inazaruk 2011-05-31 08:47:11