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

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

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



一、问题类型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
    }
  },

 

目录
相关文章
|
Web App开发 Android开发 iOS开发
iOS 调试:通过 Safari/Chrome 调试 WebView
iOS 调试:通过 Safari/Chrome 调试 WebView
9835 0
iOS 调试:通过 Safari/Chrome 调试 WebView
|
Kubernetes 容器 Perl
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
17850 0
|
移动开发 前端开发 JavaScript
React 视频播放器组件:Video Player
本文介绍了如何使用 React 和 HTML5 `<video>` 标签构建自定义视频播放器组件。首先,通过创建基础的 React 项目和 VideoPlayer 组件,实现了基本的播放、暂停功能。接着,探讨了常见问题如视频加载失败、控制条样式不一致、性能优化不足及状态管理混乱,并提供了相应的解决方案。最后,总结了构建高效视频播放器的关键要点,帮助开发者应对实际开发中的挑战。
1204 27
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
JavaScript 前端开发 数据安全/隐私保护
Web开发者必看:手把手教你如何轻松播放m3u8流地址,解锁视频播放新技能,让你的项目更上一层楼!
【10月更文挑战第23天】随着互联网技术的发展,m3u8格式因良好的兼容性和高压缩率被广泛用于网络流媒体传输。本文介绍如何在Web端播放m3u8流地址,包括引入视频播放器(如Video.js)、创建播放器容器、初始化播放器及播放m3u8流的具体步骤。此外,还涉及处理加密m3u8流的示例。
3213 1
|
API
uni-app点击按钮弹出提示框-uni.showModal(OBJECT),选择确定和取消
uni-app点击按钮弹出提示框-uni.showModal(OBJECT),选择确定和取消
2630 0
|
移动开发 资源调度 JavaScript
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
这篇文章介绍了在Vue移动端网页中使用`pdfh5`和`vue-pdf`两个插件来实现PDF文件的预览,包括滚动查看、缩放、添加水印、分页加载、跳转指定页数等功能。
10160 1
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
|
JavaScript 前端开发 API
深入理解vue组件生命周期,你一定要看到最后,最后有深入探讨
深入理解vue组件生命周期,你一定要看到最后,最后有深入探讨
683 0
|
前端开发 JavaScript
使用 JavaScript 获取 URL 参数的详细指南
【2月更文挑战第26天】
15439 2
使用 JavaScript 获取 URL 参数的详细指南
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动