uni-app 动态修改 video播放地址后,连续修改播放地址导致 video黑屏及app闪退
uni-app 动态修改 video播放地址后,连续修改播放地址导致 video黑屏及app闪退
操作步骤:
- android nvue
- 案例1:
- 第一次加载video正常播放 (video的src有播放地址)
- 然后动态修改1次video播放地址,video就黑屏了(但是播放时间还在走)。
- 连续动态修改2次 video的播放地址,app就闪退
- 案例2:
- 进入页面video的src为空
- 然后动态修改1次video的src播放地址, app就闪退
只能把video关掉(v-if控制开关),再用新地址开启video才能播放
附件示例 代码 ,app闪退时候报错:
reportJSException >>>> exception function:draw android view, exception:WX_RENDER_ERR_LAYER_OVERFLOWLayer overflow limit error: 14 layers!
示例中view的层级非常少,就一层
预期结果:
希望 可以动态修改 video播放地址,连续修改播放地址后 video不黑屏 以及 app不闪退
实际结果:
第一次加载video正常播放,然后动态修改1次video播放地址,video就黑屏了(但是播放时间还在走)。
连续动态修改2次 video的播放地址,app就闪退
bug描述:
android nvue
第一次加载video正常播放,然后动态修改1次video播放地址,video就黑屏了(但是播放时间还在走)。
连续动态修改2次 video的播放地址,app就闪退
只能把video关掉,再用新地址开启video才能播放 (v-if 控制video开启和关闭)
hbx 正式版本 3.2.12.20211029, 安卓系统版本 v4.4.2
相关链接 :
| 信息类别 | 信息内容 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Mac |
| PC开发环境版本 | 10.13.6 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.2.12 |
| 手机系统 | Android |
| 手机系统版本 | Android 4.4 |
| 手机厂商 | smartisan |
| 手机机型 | T1 |
| 页面类型 | nvue |
| Vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
[download file_name-test_video.nvue_.zip url-//ask.dcloud.net.cn/file/download/file_name-dGVzdF92aWRlby5udnVlXy56aXA=__url-Ly9pbWctY2RuLXRjLmRjbG91ZC5uZXQuY24vdXBsb2Fkcy9xdWVzdGlvbnMvMjAyMTExMTMvZGY2MDE5OWJjNDQ5NjU3OGQwYzExZDJiZGRjNGUzZWI=] [download file_name-test-mp4.zip url-//ask.dcloud.net.cn/file/download/file_name-dGVzdC1tcDQuemlw__url-Ly9pbWctY2RuLXRjLmRjbG91ZC5uZXQuY24vdXBsb2Fkcy9xdWVzdGlvbnMvMjAyMTExMTMvNjkwYjY4NzgyNTNmNzFhMDMxMTQ1ZmI4OGNkMzM2M2M=]
更多关于uni-app 动态修改 video播放地址后,连续修改播放地址导致 video黑屏及app闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HX 3.3.0 alpha bug已修复
更多关于uni-app 动态修改 video播放地址后,连续修改播放地址导致 video黑屏及app闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
赞
3.3.5版本在小米电视6.0.1的系统上还是崩溃
回复 紫0仓: 新提一个ask,给出可以复现问题的示例
1、3.3版本video的安卓版本性能不行,播放1个小时的长视频非常卡(iphone录制的mov),退回3.2.16就完全没问题 2、https://ask.dcloud.net.cn/article/39136 这个高级设置也无效了吗?想调试参数看看也完全无效
回复 q***@163.com: 出现很多的waiting事件
回复 q***@163.com: 解决了吗 我的也是更换完src地址 会随机不定时的出现调用缓冲事件 然后就闪退
微信小程序也有这个问题
请提供简单可复现的完整示例(上传附件),方便我们快速排查问题哦。
【bug优先处理规则】https://ask.dcloud.net.cn/article/38139
附件已上传
附件示例 代码 ,app闪退时候报错: reportJSException >>>> exception function:draw android view, exception:WX_RENDER_ERR_LAYER_OVERFLOWLayer overflow limit error: 14 layers!
示例中view的层级非常少,就一层
我看看
你好你好,我使用uni开发钉钉程序;使用标签,在外部浏览器可以正常播放,在钉钉小程序黑屏不能播放是因为什么呢
回复 2***@qq.com: 单独提个ask吧。 相关同事会回复你
微信小程序也有这个问题
video 组件加上 codec=“software”
试试还有没有问题
刚测试,加上 codec=“software” 没有问题,可以正常切换播放地址
回复 makeit: 那这就是个已知问题。 上个版本更新导致 android 8.0一下设备在硬件加速模式下,动态切换src 会导致类似问题。 临时解决方案先切换成软解码。 下个版本会修复此问题
那这就是个已知问题。 上个版本更新导致 android 8.0以下设备在硬件加速模式下,动态切换src 会导致类似问题。 临时解决方案先切换成软解码。 下个版本会修复此问题
好的,辛苦啦
微信小程序也有这个问题
这个问题依然存在这个是代码网上找了好多方法都没解决
下边这个是让安卓同事帮忙调试的报错
动态切换video的src大概切换三十次往上就不行了

这个问题解决了吗?我这边也遇到这个问题了,频繁切换视频src应用就崩掉了
这个问题解决了吗?我这边是通过多次切换视频src,会偶发APP闪退
这个问题是Android nvue环境下video组件动态修改src地址时的已知问题,主要原因是底层渲染引擎在处理video源切换时存在内存管理和图层渲染的bug。
从报错信息WX_RENDER_ERR_LAYER_OVERFLOWLayer overflow limit error: 14 layers!可以看出,每次修改video地址都会创建新的渲染层,但没有正确释放之前的图层资源,导致图层溢出引发闪退。
临时解决方案:
- 使用v-if强制重新渲染(你已发现的方法):
<video v-if="showVideo" :src="videoSrc"></video>
修改地址时先设置showVideo=false,在nextTick中更新地址后再设置showVideo=true。
- 使用key强制重建组件:
<video :key="videoKey" :src="videoSrc"></video>
每次修改地址时同时更新videoKey值(如时间戳)。
- 延迟修改地址: 在修改地址前先暂停播放,添加短暂延迟:
this.videoContext.pause()
setTimeout(() => {
this.videoSrc = newUrl
}, 100)


