Dizking

博客园 首页 新随笔 联系 订阅 管理
关于audio标签在ios系统无法播放录音的问题整理:
<auido id="audio" ref="audio" src="audioPath" controls=controls></audio>

  这样即使赋值有效额audioPath也无法播放音频文件。因为ios没有下载语音文件或者说是被safari拦截或者说是需要手动触发事件。网上的原因基本都大概如此。然后,我就查找了一下audio类,做了如下的代码修改:

mounted(){
    this.$refs.audio.addEventListener("touchstart",function(){
        if(this.readyState!=4){
            this.load();
        }
    })
}

audio对象具有readyState属性,有四个取值,只有当readyState==4时,录音文件可以播放,所以我为audio标签添加了一个touchstart事件,进行录音文件的加载。

代码可以不太严谨,我看网上还有适时removeEventListener的代码,我没有加进来。欢迎大家一下交流讨论,提出更优方案。不胜感激!!!!!

吐个小槽:ios的一些权限控制对于前端人员简直就是折磨,本来最初找到的实现方案在android已经测试通过了,结果到了ios几乎就是全部推翻重新做!!!!

关于录音和播放的其他问题,可以参考如下地址:

https://www.npmjs.com/package/js-audio-recorder/v/0.2.3            //js-audio-recorder可以实现录音,播放录音。安卓满足要求,ios无法使用。。。

https://www.npmjs.com/package/benz-amr-recorder        //benz-amr-recorder可以用来播放amr音频,当安卓人员把amr音频返回给你的时候可以使用这个播放。录音部分没有尝试。

 

posted on 2021-02-01 10:50  Dizking  阅读(389)  评论(0)    收藏  举报