1***@qq.com
1***@qq.com
  • 发布:2024-11-29 21:49
  • 更新:2024-11-30 12:42
  • 阅读:96

【报Bug】uniapp动态切换video的src,视频黑屏不播放

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows 10

HBuilderX类型: 正式

HBuilderX版本号: 4.29

手机系统: Android

手机系统版本号: Android 7.1.1

手机厂商: 模拟器

手机机型: Samsung Galaxy S20 Ultra

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

安卓7的系统,先给video标签的src一个初始的视频连接,可以正常播放,动态切换成另一个url直接黑屏了

预期结果:

正常播放新的视频链接

实际结果:

视屏组件黑屏,不播放了

bug描述:

动态切换video标签的src,黑屏,不播放了

2024-11-29 21:49 负责人:无 分享
已邀请:
DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

感谢反馈,这个你测试了多少设备,安卓模拟器是否正常,ios 设备是否正常,经过你测试和当前这台机器有关系,还是和安卓 7 有关系,还是都有问题,不是兼容性的关系?

  • 1***@qq.com (作者)

    测试了三台设备,一个安卓7的模拟器,两台安卓7的电视,都有这个问题,另外测了一台安卓9的电视和模拟器,安卓9没有发现这个问题,ios没有测试过

    2024-11-30 11:02

  • DCloud_UNI_OttoJi

    回复 1***@qq.com: 我使用你给的案例,在 Vue2+ HBuilderX alpha 最新版,测试安卓 14 没有复现黑屏的情况。怀疑是兼容问题,你尝试给 video 的父元素设置 v-if 切换一下试试,看是否可以绕过。我没有复现你的问题,所以不能进一步排查

    2024-11-30 16:21

  • 1***@qq.com (作者)

    回复 DCloud_UNI_OttoJi: 应该是只有安卓7以下的设备会有这种问题,另外我尝试过使用v-if去切换视频组件,但是会触发另一个问题,两个视频组件不断的销毁重建会使内存不断升高,最后导致应用崩溃卡死。参考:https://ask.dcloud.net.cn/question/198855

    2024-12-02 09:00

  • DCloud_UNI_OttoJi

    回复 1***@qq.com: 好,关联的帖子我转给相关同事了,细节在这个帖子里更新。现在有绕过方案吗,简单地通过停止播放再销毁是否可以缓解。如果是安卓 7 有问题,针对不同系统编写逻辑绕过是否解决了你的问题

    2024-12-02 11:11

1***@qq.com

1***@qq.com (作者)

<template>  
    <view>  
        <video :src='url' style='width: 400px;height: 400px;'></video>  
        <button @click='handleChange'>切换url</button>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                index: 0,  
                url: 'https://zxinfo.oss-cn-hangzhou.aliyuncs.com/20241125/202411251032166397.4.mp4',  
                urls: [  
                    'https://zxinfo.oss-cn-hangzhou.aliyuncs.com/20241125/202411251032166397.4.mp4',  
                    'https://zxinfo.oss-cn-hangzhou.aliyuncs.com/20241116/202411161935093569.mp4'  
                ]  

            }  
        },  
        methods: {  
            handleChange() {  
                this.index = this.index == 0? 1 : 0  
                this.url = this.urls[this.index]  
            }  
        }  
    }  
</script>  

<style>  

</style>  

要回复问题请先登录注册