uni-app createInnerAudioContext播放不完整
uni-app createInnerAudioContext播放不完整
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 15.5 | HBuilderX |
操作步骤:
17秒的视频,获取到的时长只有9秒,播放不全被截取了
const audioContext = uni.createInnerAudioContext()
audioContext.src = '地址'
audioContext.onCanplay(() => {
const duration = this.audioContext.duration;
})
audioContext.onTimeUpdate(() => {
})
audioContext.onEnded(() => {
})
audioContext.play()
预期结果:
17秒的视频,获取到的时长只有9秒,播放不全被截取了
const audioContext = uni.createInnerAudioContext()
audioContext.src = '地址'
audioContext.onCanplay(() => {
const duration = this.audioContext.duration;
})
audioContext.onTimeUpdate(() => {
})
audioContext.onEnded(() => {
})
audioContext.play()
实际结果:
17秒的视频,获取到的时长只有9秒,播放不全被截取了
const audioContext = uni.createInnerAudioContext()
audioContext.src = '地址'
audioContext.onCanplay(() => {
const duration = this.audioContext.duration;
})
audioContext.onTimeUpdate(() => {
})
audioContext.onEnded(() => {
})
audioContext.play()
更多关于uni-app createInnerAudioContext播放不完整的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
试试原生微信小程序有没有这个问题
更多关于uni-app createInnerAudioContext播放不完整的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个常见的音频元数据加载问题。onCanplay回调触发时音频文件的元数据可能还未完全解析,导致duration获取不准确。
建议改用onLoadedMetadata事件来获取准确的音频时长:
const audioContext = uni.createInnerAudioContext()
audioContext.src = '地址'
audioContext.onLoadedMetadata(() => {
const duration = audioContext.duration; // 这里获取的时长更准确
console.log('完整时长:', duration)
})
audioContext.onTimeUpdate(() => {
})
audioContext.onEnded(() => {
})
audioContext.play()
另外,音频文件本身可能存在问题,建议:
- 检查音频文件是否完整,尝试用其他播放器验证
- 确认音频编码格式兼容性,MP3、AAC格式支持较好
- 在
onError回调中添加错误处理,排查加载问题
如果问题依旧,可以尝试在调用play()前添加短暂延迟,确保元数据加载完成:
audioContext.onLoadedMetadata(() => {
setTimeout(() => {
audioContext.play()
}, 100)
})

