小程序
小游戏
企业微信
微信支付
扫描小程序码分享
使用wx.createInnerAudioContext()获取音频长度时,总是得到0,官方请帮忙解决一下吧,谢谢
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
onPlay()事件只是开始加载,但资源并没有加载初始化,这需要一定时间。所以你不能在这里获取时长。onTimeUpdate()可以拿到准确的当前进度和时长。(个人理解)
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
不可以呀,调不到这个监听
handleInitAudio(src: string) { const audioContext = wx.createInnerAudioContext(); innerAudioContextRef.current = audioContext; audioContext.src = src //解决真机无法获取音频时长,被迫用这么**的写法 audioContext.autoplay = false; const switchAudioPlay = setInterval(() => { audioContext.play(); audioContext.pause(); }, 100) audioContext.onPlay(() => { const getDuration = setInterval(() => { if (audioContext.duration > 0) { const durationStr = this.parseTime(audioContext.duration) this.setData({ durationStr, remainTimeStr: durationStr }) clearInterval(getDuration); clearInterval(switchAudioPlay); } }, 100) }) ... }
亲测有效 保险起见 你可以在递归 播放音频的时候 静音
谢邀。没用过音频,围观一下
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
onPlay()事件只是开始加载,但资源并没有加载初始化,这需要一定时间。所以你不能在这里获取时长。onTimeUpdate()可以拿到准确的当前进度和时长。(个人理解)
不可以呀,调不到这个监听
handleInitAudio(src: string) { const audioContext = wx.createInnerAudioContext(); innerAudioContextRef.current = audioContext; audioContext.src = src //解决真机无法获取音频时长,被迫用这么**的写法 audioContext.autoplay = false; const switchAudioPlay = setInterval(() => { audioContext.play(); audioContext.pause(); }, 100) audioContext.onPlay(() => { const getDuration = setInterval(() => { if (audioContext.duration > 0) { const durationStr = this.parseTime(audioContext.duration) this.setData({ durationStr, remainTimeStr: durationStr }) clearInterval(getDuration); clearInterval(switchAudioPlay); } }, 100) }) ... }亲测有效 保险起见 你可以在递归 播放音频的时候 静音
谢邀。没用过音频,围观一下