近期使用AudioTrack播放wav文件的时候出现开头爆音的现象,分析后得知wav文件有个44或46字节的头数据,在使用AudioTrack播放写入数据时要把这个头数据去掉即可。源码实例如下:
private static final int STREAM_TYPE = AudioManager.STREAM_MUSIC;//音频流类型
private static final int SAMPLERATE_HZ = 16000;//采样率
private static final int CHANNEL_CONFIG = AudioFormat.CHANNEL_CONFIGURATION_MONO;//捕获音频的声道数目
private static final int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT;//音频量化位,脉冲编码调制
/**
* 启动播放
* @param voicename
*/
boolean isWriteData = false;//是否正在读取音频数据
public void startPlay(String filepath) {
Log.i(TAG, "startPlay:" + filepath);
stopPlay();
isStopPlay = false;
try {
// //AudioTrack未初始化
// if(mAudioTrack.getState() == AudioTrack.STATE_UNINITIALIZED) {
// throw new RuntimeException("The AudioTrack is not uninitialized");
// }//AudioRecord.getMinBufferSiz

本文介绍了在Android中使用AudioTrack播放wav文件时遇到的开头爆音问题,分析原因是wav文件的44或46字节头数据导致的。通过在写入数据时忽略这些头数据,可以成功解决此问题。示例代码展示了具体实现方法。
最低0.47元/天 解锁文章
807

被折叠的 条评论
为什么被折叠?



