项目场景:
通过AudioTrack播放wav音效文件
问题描述:
声音开头有爆音,“嗒”一声非常明显:
原因分析:
经过修改Buffer大小,采样率都不起作用,最后沉下心来查找资料,最终从wav文件格式入手,找到原因:
- wav文件格式包含文件头和文件体。
- 代码中从文件读取到buffer播放,没有跳过文件头。
有人说了,无图不真相,抄了一个图做纪念,方便查看。
解决方案:
AudioTrack的write方法跳过头部,仅播放data域。
//先确定声道,采样率,播放类型,位数,根据实际情况进行调整,然后创建AudioTrack。
mAudioTrack.write(newDataBuffer, 44, newDataBuffer.length-44);
呜谢:
AudioTrack简单简介之四:wav去掉文件头之解决爆音
WAV文件格式详解