小程序
小游戏
企业微信
微信支付
扫描小程序码分享
以上代码是做的一个在 Input 输入框输入时,有键盘音效的功能,播放音效采用了 InnerAudioContext API,但是开发者工具中可以正常播放,但是在 iOS端预览时有非常严重的延迟(数十毫秒),Android端暂时没有测试,请官方看看有没有办法解决。
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
仔细测试了一下,发现主要是canPlay之前消耗的事件太长了,canPlay之后到真正onPlay,大概只消耗1-5ms。
另外,感觉 InnerAudioContext 这个设计逻辑也很奇怪,按照一般的理解,在重复播放超短音频(20ms以内)的时候,为了避免在下一次播放的时候由于上一次播放没播放完成导致下一次播放失败的情况,应该是先 innerAudioContext.stop(),然后再innerAudioContext.play()。
然而事实情况是这样根本不行,反而需要在每一次播放的时候重建InnerAudioContext实例才可以。
当然,延迟的问题是最大的问题,官方看能解决么?
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
打开代码片段,在输入框中随便输入什么。分别在开发者工具和 iOS 手机端测试,看控制台输出结果。你会发现 iOS 端播放 InnerAudio延迟非常严重。
仔细测试了一下,发现主要是canPlay之前消耗的事件太长了,canPlay之后到真正onPlay,大概只消耗1-5ms。
另外,感觉 InnerAudioContext 这个设计逻辑也很奇怪,按照一般的理解,在重复播放超短音频(20ms以内)的时候,为了避免在下一次播放的时候由于上一次播放没播放完成导致下一次播放失败的情况,应该是先 innerAudioContext.stop(),然后再innerAudioContext.play()。
然而事实情况是这样根本不行,反而需要在每一次播放的时候重建InnerAudioContext实例才可以。
当然,延迟的问题是最大的问题,官方看能解决么?