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()

另外,音频文件本身可能存在问题,建议:

  1. 检查音频文件是否完整,尝试用其他播放器验证
  2. 确认音频编码格式兼容性,MP3、AAC格式支持较好
  3. onError回调中添加错误处理,排查加载问题

如果问题依旧,可以尝试在调用play()前添加短暂延迟,确保元数据加载完成:

audioContext.onLoadedMetadata(() => {
  setTimeout(() => {
    audioContext.play()
  }, 100)
})
回到顶部