如何解决使用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音频格式。不确定其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。