createInnerAudioContext播放不完整?
代码片段: https://developers.weixin.qq.com/s/FoS9qZmt8s0s
全文内容为:”你向投资人演示商业计划时,对方打断说:“给你1分钟说清楚盈利模式!”你应如何回答?“
只播到了:”你向投资人演示商业计划时“
音频有8秒的时长,
在oncanplay回调里的innerAudioContext.duration只有2+秒
代码:
// index.js
Page({data: {audioSrc: 'https://f.foundingaz.cn/api/files/audio/cherry_935b408fcf480c24d8411b2bbefbdd1e',innerAudioContext: null,errorMsg: ''},initAudio() {console.log("🚀 ~ initAudio ~ initAudio:");if (this.data.innerAudioContext) {this.data.innerAudioContext.destroy();}const innerAudioContext = wx.createInnerAudioContext();innerAudioContext.autoplay = false;innerAudioContext.src = this.data.audioSrc;innerAudioContext.onCanplay(() => {console.log('准备好了,可以开始播放', innerAudioContext.duration);});innerAudioContext.onPlay(() => {console.log('开始播放');this.setData({ errorMsg: '' });});innerAudioContext.onPause(() => {console.log('暂停播放');});innerAudioContext.onStop(() => {console.log('停止播放');});innerAudioContext.onEnded(() => {console.log('播放结束');// 可以在这里处理播放结束后销毁实例的逻辑,如果需要的话// if (this.data.innerAudioContext) {// this.data.innerAudioContext.destroy();// this.setData({ innerAudioContext: null });// console.log('音频实例已销毁');// }});innerAudioContext.onError((res) => {console.error('播放错误:', res.errMsg, res.errCode);this.setData({ errorMsg: `播放错误: ${res.errMsg} (错误码: ${res.errCode})` });// 发生错误时,可以考虑销毁实例,避免资源占用if (this.data.innerAudioContext) {this.data.innerAudioContext.destroy();this.setData({ innerAudioContext: null });console.log('音频实例因错误已销毁');}});this.setData({ innerAudioContext });},playAudio() {console.log("🚀 ~ playAudio ~ playAudio:", this.data.innerAudioContext);if (!this.data.innerAudioContext) {this.initAudio();}if (this.data.innerAudioContext) {this.data.innerAudioContext.play();}},pauseAudio() {if (this.data.innerAudioContext) {this.data.innerAudioContext.pause();}},stopAudio() {if (this.data.innerAudioContext) {this.data.innerAudioContext.stop();this.data.innerAudioContext.destroy();this.setData({ innerAudioContext: null });console.log('音频实例已销毁');}},onLoad() {this.initAudio();},onUnload() {if (this.data.innerAudioContext) {console.log('组件卸载,销毁音频实例');this.data.innerAudioContext.destroy();this.setData({ innerAudioContext: null });}}
});
// index.wxml
<view class="audio-player-container"><button bindtap="playAudio">播放</button><button bindtap="pauseAudio">暂停</button><button bindtap="stopAudio">停止并销毁</button><view wx:if="{{errorMsg}}">错误: {{errorMsg}}</view>
</view>
// index.wxss
.audio-player-container {display: flex;flex-direction: column;align-items: center;padding: 20px;
}button {margin: 10px;padding: 10px 20px;
}
// index.json
{"component": true,"usingComponents": {}
}