uni-app createInnerAudioContext 访问https音频 报MediaError -99
uni-app createInnerAudioContext 访问https音频 报MediaError -99
| 属性 | 值 |
|---|---|
| 产品分类 | 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 |
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();//当音频自然播放结束后 销毁当前实例
});
操作步骤:
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();//当音频自然播放结束后 销毁当前实例
});
更多关于uni-app createInnerAudioContext 访问https音频 报MediaError -99的实战教程也可以访问 https://www.itying.com/category-93-b0.html
嘿嘿嘿
更多关于uni-app createInnerAudioContext 访问https音频 报MediaError -99的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我这边没有复现到,手机是红米note8 你放到手机上面试试看 能否正常播放
你复现的时候用的是上述https://www.zebrabox.com.cn/addons/zh_cjdianc/call/write_off_success.mp3地址吗?不是的话确实不一定能复现出来,我换测试服务器https也正常。所以才怀疑证书信任问题。这个问题我看前两年出现过,这次又引入了好像。
我用你发的地址在我这边手机上测试是没有问题的,这个只能在你说的这个设备上复现吗
我刚才又测试了一遍,确实是手机上能播放,这个设备上播放不了。但这个设备又不是全都不能播放。这是否跟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.mp3
https://myssl.com/www.zebrabox.com.cn https://myssl.com/wxapp.test.zebrabox.com.cn 上面这是两个域名的证书差异,但是不知道是否是哪些因素影响的? 还是说Android 7.1.1下有什么特殊要求?
不对,我这边两家不同的设备厂商,不同的固件源码编译出来的,都是安卓7.1.2版本(帖子里写7.1.1是因为下拉选项里没有7.1.2),都出现这个问题。但是咱们在手机上测试的环境都是安卓10、安卓11的样子。你看会不会是安卓版本导致的兼容性问题?
回复 斑马披萨: 稍等,我找几个低版本的手机试一下
回复 DCloud_Android_zl: 我这边暂时找不到安卓7的手机,测试安卓6的,播放没问题
回复 DCloud_Android_zl: 或者你试试抓包,看有没有报错
回复 DCloud_Android_zl: 抓包指的是?
回复 斑马披萨: 我这只能打印出图片里的errMsg和errCode,稍等我贴出来
回复 DCloud_Android_zl: 我这边尝试将正式服务器nginx的SSL相关配置改为和测试服务器一致,问题依旧。你说的抓包是啥情况?我抓app的网络请求包吗?
回复 斑马披萨: 是的,你看设备抓包会不会报错
回复 DCloud_Android_zl: 没抓过啊,用到的工具都是啥?搞个代理还是有啥可靠点的工具?
回复 DCloud_Android_zl: 我刚才尝试先uni.downloadFile()下载到本地临时路径,再播放是正常的。而且看报错的触发延迟,应该是访问https网络路径超时了。uni.createInnerAudioContext()访问网络路径对证书信任这块是个啥情况啊?
回复 DCloud_Android_zl: 问题已解决,原因是nginx配置里SSL相关配置里,为了安全已经废弃了TLS 1.0的支持,但是在安卓7.1.2下uni.createInnerAudioContext()仅支持TLS 1.0协议,因此导致不能直接播放https网络资源。(PS:但是为啥uni.downloadFile接口就不受影响呢?所以说,还是uni.createInnerAudioContext()内部有问题对吧?)
回复 DCloud_Android_zl: 方便的话加个联系方式吧,以后有什么问题沟通起来比较方便一点。手机:18263101232 微信、QQ、钉钉、飞书同号。
大哥,我也出现这个问题了,我是一个新手
你说的:原因是nginx配置里SSL相关配置里,为了安全已经废弃了TLS 1.0的支持
我需要怎么改啊?
这个问题还没修复吗

