小程序提供了录音和播放音频的能力,从基础库 1.6.0 开始支持了wx.getRecorderManager(),录音都采用wx.getRecorderManager()提供的api,播放音频文件采用wx.createInnerAudioContext()提供的api
导入录音和播放音频功能
const recorderManager = wx.getRecorderManager(); // 录音功能 const innerAudioContext = wx.createInnerAudioContext(); // 播放音频
注册录音结束事件
// 录音结束 recorderManager.onStop((res) => { console.log('recorder stop'); const { tempFilePath } = res; // 录音的本地临时文件 // ... 播放音频 innerAudioContext.src = tempFilePath ; innerAudioContext.play(); });
开始录音
const options = { duration: 10000, sampleRate: 44100, numberOfChannels: 1, encodeBitRate: 192000, format: 'aac', frameSize: 50 } recorderManager.start(options);
options是一些音频的配置,具体的配置可以查看 官方文档
这样就创建了一个简单的音频录音和播放功能
ios播放音频文件没有声音
在开发过程中发现在开发者工具和安卓测试机上都能正常录音和播放录音文件,但是在ios手机上发现音频文件播放没有声音,百度查看没有发现有遇到类似的问题,只能自己各种测试,最后发现ios手机是静音模式!!!果然取消静音模式就能够正常播放了。
其实仔细查看api文档, innerAudioContext 对象的属性列表中发现一个属性 obeyMuteSwitch ,这个属性可以在静音模式下播放音频文件,并且有声音!!!
是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true可以通过设置obeyMuteSwitch为false开启在静音模式下播放音频!解决了ios静音模式下播放音频文件没有声音的问题!
innerAudioContext.obeyMuteSwitch = false;
在开发小程序的过程中遇到问题还是应该多查看api文档,才能更加快速的解决遇到的bug!