微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用RandomAccessFile进行音频附加

如何解决使用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 举报,一经查实,本站将立刻删除。