video-08-videojs黑屏问题(详解总结)

文章详细分析了两种video黑屏问题及其解决方案。问题一是由于videojs初始化时DOM未加载完成,解决方案是延迟初始化;问题二是离开页面后视频仍自动播放,原因是未正确卸载videojs对象,解决方案是在Vue组件销毁前调用dispose方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博主在开发的时候遇到这种情况,video黑屏问题,问题有两种情况,一种是视频黑屏且不可以播放,另一种是视频黑屏且自己播放,事件可以监听到

目录

一、问题类型1 视频黑屏且不可以播放

1.1 原因

1.2 解决方案思路

1.3 代码实现

 二、问题类型2 视频黑屏且自己播放,事件可以监听到

2.1 复现

2.2 原因

2.3 解决方案

2.4 代码实现


一、问题类型1 视频黑屏且不可以播放

1.1 原因

        在执行videojs初始化的时候,videojs会通过video标签上的id来获取video的dom元素,

但是这个时候,dom可能还没有加载上去!!!初始化失败,所以黑屏

1.2 解决方案思路

        在执行videojs初始化以前,先通过document.getElementById("videoPlayer1")看能不能获取到dom元素,如果获取的是null,就是没有还没有dom,等延迟500ms继续获取,如果获取到dom,那么就进行videojs的初始化

1.3 代码实现

getVideo(src) {
     const aaa = document.getElementById("videoPlayer1")
      //判断是否获取到dom,获取到了,那么跳过这,直接videojs初始化
      if (!aaa) {
        setTimeout(() => {
          this.getVideo(src)//延迟500ms继续执行这个初始化函数,继续判断是否能获取到
        }, 500)
        return
      }

    //代码执行到这里,即是能正常视频播放,且不会黑屏!!!!
      this.player = Videojs('videoPlayer1', {}, function () {
       
      })
      this.player.src([{
        src: src
      }])
    }

 二、问题类型2 视频黑屏且自己播放,事件可以监听到

2.1 复现

        (挺奇葩的)我们打开这个页面的视频播放,然后返回了一个页面,再打开就会出现,video黑屏但是视频还在自己播放

2.2 原因

        我们离开这个页面的时候,没有将这个videojs初始化的对象清空和卸载

2.3 解决方案

        监听离开本页面的事件,如果是vue的话,在组件销毁前将videojs初始化的对象卸载掉

2.4 代码实现

vue中组件销毁前卸载

beforeDestroy() {
    if (this.player) {
      this.player.dispose(); // Removing Players,该方法会重置videojs的内部状态并移除dom
    }
  },

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_揽

苦der程序员敲代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值