var music = uni.createInnerAudioContext()
music.autoplay = true
music.src ="https://www.zebrabox.com.cn/addons/zh_cjdianc/call/write_off_success.mp3"
music.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
music.destroy(); //发生错误后,销毁实例
});
music.onPause(function() {
console.log('end');
music.destroy(); //这里是播放暂停后,销毁实例
});
music.onStop(function() {
console.log('stop');
music.destroy(); //这里是播放停止后,销毁实例
});
music.onEnded((res) => {
music.destroy();//当音频自然播放结束后 销毁当前实例
});
- 发布:2022-01-13 14:16
- 更新:2022-04-11 13:34
- 阅读:907
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 10 专业版 21H2 19044.1415
HBuilderX类型: 正式
HBuilderX版本号: 3.3.5
手机系统: Android
手机系统版本号: Android 7.1.1
手机厂商: 想米收银机
手机机型: MiPOS101-rk312x
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
App下载地址或H5⽹址: https://vkceyugu.cdn.bspapp.com/VKCEYUGU-5ea5dd5e-248c-4a5a-9a9e-5ccb8807dec1/fb154491-debe-453d-9f1b-38efa7c57b19.apk
操作步骤:
预期结果:
预期能正常播放https音频
预期能正常播放https音频
实际结果:
不能正常播放https音频
不能正常播放https音频
bug描述:
uni.createInnerAudioContext() 播放部分https网络音频文件报MediaError -99错误,注意,是部分https。当报错时,改为http则播放正常。
例如:
music.src ="https://www.zebrabox.com.cn/addons/zh_cjdianc/call/write_off_success.mp3" //https报错
music.src ="http://www.zebrabox.com.cn/addons/zh_cjdianc/call/write_off_success.mp3" //http正常
music.src ="https://wxapp.test.zebrabox.com.cn/addons/zh_cjdianc/call/write_off_success.mp3" //https正常
综上所述 怀疑是createInnerAudioContext() 读取音频数据时,有证书信任问题。但是尝试重新颁发部署了同机构的新的证书,问题依旧。
var music = uni.createInnerAudioContext()
music.autoplay = true
music.src ="https://www.zebrabox.com.cn/addons/zh_cjdianc/call/write_off_success.mp3"
music.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
music.destroy(); //发生错误后,销毁实例
});
music.onPause(function() {
console.log('end');
music.destroy(); //这里是播放暂停后,销毁实例
});
music.onStop(function() {
console.log('stop');
music.destroy(); //这里是播放停止后,销毁实例
});
music.onEnded((res) => {
music.destroy();//当音频自然播放结束后 销毁当前实例
});
小枫叶 - 外包接单加v:wlmk1234567 注明来意
我这边没有复现到,手机是红米note8 你放到手机上面试试看 能否正常播放
-
斑马披萨 (作者)
你复现的时候用的是上述https://www.zebrabox.com.cn/addons/zh_cjdianc/call/write_off_success.mp3地址吗?不是的话确实不一定能复现出来,我换测试服务器https也正常。所以才怀疑证书信任问题。这个问题我看前两年出现过,这次又引入了好像。
2022-01-17 13:48
我用你发的地址在我这边手机上测试是没有问题的,这个只能在你说的这个设备上复现吗
-
斑马披萨 (作者)
我刚才又测试了一遍,确实是手机上能播放,这个设备上播放不了。但这个设备又不是全都不能播放。这是否跟SSL证书的加密套件支持度有关呢?
手机上能播放但设备上不能播放:https://www.zebrabox.com.cn/addons/zh_cjdianc/call/add_yuyue_order.mp3
手机和设备都能播放:https://wxapp.test.zebrabox.com.cn/addons/zh_cjdianc/call/write_off_success.mp32022-01-20 11:20
-
斑马披萨 (作者)
https://myssl.com/www.zebrabox.com.cn
https://myssl.com/wxapp.test.zebrabox.com.cn
上面这是两个域名的证书差异,但是不知道是否是哪些因素影响的?
还是说Android 7.1.1下有什么特殊要求?2022-01-20 11:28
-
斑马披萨 (作者)
不对,我这边两家不同的设备厂商,不同的固件源码编译出来的,都是安卓7.1.2版本(帖子里写7.1.1是因为下拉选项里没有7.1.2),都出现这个问题。但是咱们在手机上测试的环境都是安卓10、安卓11的样子。你看会不会是安卓版本导致的兼容性问题?
2022-01-20 11:33
-
斑马披萨 (作者)
回复 DCloud_Android_zl: 我这边尝试将正式服务器nginx的SSL相关配置改为和测试服务器一致,问题依旧。你说的抓包是啥情况?我抓app的网络请求包吗?
2022-01-20 13:34
-
斑马披萨 (作者)
回复 DCloud_Android_zl: 我刚才尝试先uni.downloadFile()下载到本地临时路径,再播放是正常的。而且看报错的触发延迟,应该是访问https网络路径超时了。uni.createInnerAudioContext()访问网络路径对证书信任这块是个啥情况啊?
2022-01-20 15:43
-
斑马披萨 (作者)
回复 DCloud_Android_zl: 问题已解决,原因是nginx配置里SSL相关配置里,为了安全已经废弃了TLS 1.0的支持,但是在安卓7.1.2下uni.createInnerAudioContext()仅支持TLS 1.0协议,因此导致不能直接播放https网络资源。(PS:但是为啥uni.downloadFile接口就不受影响呢?所以说,还是uni.createInnerAudioContext()内部有问题对吧?)
2022-01-20 16:17
-
斑马披萨 (作者)
回复 DCloud_Android_zl: 方便的话加个联系方式吧,以后有什么问题沟通起来比较方便一点。手机:18263101232 微信、QQ、钉钉、飞书同号。
2022-01-20 16:36