uni-app backgroundAudioManager API 在ngnix gzip压缩后无法获取时长
uni-app backgroundAudioManager API 在ngnix gzip压缩后无法获取时长
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
HBuilderX类型:
正式
HBuilderX版本号:
3.1.22
手机系统:
Android
手机系统版本号:
Android 10
手机厂商:
华为
手机机型:
nove 3e
页面类型:
vue
打包方式:
云端
示例代码:
bgAudioMannager.onTimeUpdate((e) => {
console.log((bgAudioMannager.duration).toFixed(2))
if (Math.floor(bgAudioMannager.currentTime) > Math.floor(this.playTime)) {
this.$backgroundAudioData.formatedPlayTime = this.formatedPlayTime = util.formatTime(Math.floor(bgAudioMannager.currentTime));
}
this.$backgroundAudioData.playTime = this.playTime = bgAudioMannager.currentTime;
})
操作步骤:
官方的demo 放上我的gzip压缩音频地址就会这样
预期结果:
希望能获取到完整的信息,
实际结果:
无法获取到时长,而且无法seek
一旦seek 操作则音频所有的操作全部无法进行
bug描述:
nginx 配置 gzip on; gzip_types audio/mpeg
backgroundAudioManager 对象 就无法获取到 duration
我访问游览器是可以访问的
更多关于uni-app backgroundAudioManager API 在ngnix gzip压缩后无法获取时长的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app backgroundAudioManager API 在ngnix gzip压缩后无法获取时长的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的服务器配置与客户端音频API兼容性问题。当Nginx启用gzip压缩时,虽然浏览器能正常处理,但uni-app的backgroundAudioManager在解析gzip压缩的音频流时可能出现异常。
关键问题在于:gzip压缩可能破坏了音频文件的原始结构,导致客户端无法正确解析元数据,特别是duration信息。同时seek操作失败也印证了这一点——压缩后的音频流缺少必要的字节偏移信息。
解决方案:
- 为音频文件单独配置Nginx,禁用gzip压缩:
location ~* \.(mp3|m4a|aac)$ {
gzip off;
add_header Cache-Control "public, max-age=31536000";
}
- 或者保持gzip开启但排除音频类型:
gzip_types text/plain text/css application/json application/javascript text/xml;
- 检查音频文件头信息是否完整,建议使用ffmpeg验证:
ffmpeg -i your_audio.mp3

