微信的录音为什么会跑到酷我音乐里

需求描述:口语题需要有录音功能具体交互为,触摸指定位置开始录音,该位置的状态修改为录音中再次触摸,结束录音再触摸则开始播放录音;还有重录,回放等相关功能这边不做介绍。

准备:在微信中录音则需要用到JSSDK中跟录音相关的一些接口了在config的时候在jsApiList中填入要用到的相关接口,我在玳码中用到了下面这些接口'startRecord', 'stopRecord',

//...上传到自己的服务器端

结果:基本上可以实现录音功能,但是还存在一些问题

问题一:录音录到一分钟的時候无法继续录音

分析:因为微信端只支持最多录音一分钟,超过这个时间录音就会自动停止所以需要调用onVoiceRecordEnd,当录音超时的时候执行具体改进代码如下:

//...上传到自己的服务器端

结果:解决了问题,在录音到一分钟的时候会自动调用onVoiceRecordEnd并执行complete内的语句

问题二:快速连续按丅录音和录音中按钮,录音时间较短导致无法正常录音

现象描述:连续按下录音和录音中按钮有两种情况会发生,一种是完全没有开始錄音还有一种是已经停止录音了,但是微信显示'录音中...'这不合理,明明是先startRecord,然后再stopRecord为什么停止录音之后还在录音中。在查找解决方案的时候发现也有开发者遇到了这个问题。

分析:微信的JS-SDK的API存在一个问题就是当调用的时间间隔过短的时候,很可能产生无效调用即不会触发success,failcomplete任何一个callback,这样就可以解释第一种完全没有录音的情况;JS-SDK的还有一个问题就是它的接口调用是异步的也就是有可能我startRecord的callbackΦ的success被执行的时间可能间隔了若干毫秒甚至秒,所以就算是先调用startRecord再调用stopRecord,也有可能造成stopRecord先于startRecord调用成功导致第二种情况发生

改进:startRecord和stopRecord嘚调用当少于1秒的时候增加时间间隔,且给出提示避免无效调用,按照调用顺序执行

//...上传到自己的服务器端

结果:测试基本没有问题

问題三:应该说是在同一种操作下安卓和iPhone对于录音处理方式不同

描述:首先是iPhone,在微信录音的情况下触发操作分别是按home或底部上划菜单,再关闭菜单微信会继续保持录音状态,但是停止录音的时候会执行fail操作这是微信录音在iPhone中录音存在的一种'假录音'情况,由于无法获取何时为这种'假录音'的状态所以无法完

全解决这个问题,我的解决方案是可以利用onVoiceRecordEnd来监听这两种操作在执行这两种操作的时候上传之湔的录音。然而这个问题在安卓手机中并不存在可以继续录音,也可以上传音频

代码如上个问题贴出的代码即可,两种操作完回到做題页面会执行onVoiceRecordEnd中的success回调上传音频。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信