问题场景
后台上传了有一个大小为700+M的视频文件,结果在小程序播放页面加载一会就会黑屏,并且视频时长也没有解析成功,但是视频路径在浏览器访问是没有问题的。(当时是在小米手机出现该bug)
分析问题
可能原因:
- 上传阿里云视频路径地址有问题。(已排除)
- 可能视频文件过大,导致加载失败。
- 是否是手机厂商兼容性问题。
解决方案
针对以上问题首先在本地微信ide上无法复现该bug,视频都能正常播放。然后找了三款手机进行测试:
机型 | 是否复现该bug |
vivo | 否 |
华为 | 是 |
苹果 | 否 |
接着就去百度找相关帖子,最多的解决方案是在video标签上添加custom-cache="{{true}}",意思大概是是否允许用户缓存,由于微信小程序中的video标签是对原生H5<video>做过二次封装的,因此查了官方文档,文档上并未出现该属性,并且添加完这个属性后并未解决我的问题。
于是,就直接使用该标签的解析错误的回调:
捕获的错误信息如下:
error {
"type": "error",
"target": {"dataset": {}, "id": "myVideo", "offsetTop": 0, "offsetLeft": 0},
"currentTarget": {"dataset": {}, "id": "myVideo", "offsetTop": 0, "offsetLeft": 0},
"timeStamp": 32924,
"detail": {
"errMsg": "MEDIA_ERR_DECODE(-14000,14010017)"
}
}
最后搜了很多帖子都没有找的解决办法,最后将问题抛给了官方:
结论
最后,通过修改视频文件名称问题是解决了,但是小视频文件名可以是中文,大视频文件就不行,属实有点。。。,当然还有其他方式比如将视频源文件转码成其他格式的文件。希望文章能欧帮助到遇到同样问题的小伙伴,有问题欢迎指正,再见!!