Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59120
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 232
  • 用 户 组: 普通用户
  • 注册时间: 2020-11-30 14:45
个人简介

专注流媒体、视频物联网、云计算、大数据开发

文章分类

全部博文(22)

文章存档

2021年(18)

2020年(4)

我的朋友

分类: C/C++

2021-11-11 16:23:57

EasyPlayer播放器系列项目是TSINGSEE青犀视频开发的极具开放性的播放器项目,用户可以根据自己的需求调用接口或者进行开发,实用性强,稳定性也非常优越,很多用户调用EasyPlayer播放器自行做开发或者集成。

在最近在使用@easydarwin/easyplayer播放器过程中播放多路flv流出现的浏览器崩溃问题。经过分析源码发现程序内有个定时器:

点击(此处)折叠或打开

  1. this.player.on("ended", () => {
  2.     if (this.live) {
  3.       this.isWaiting = true;
  4.       this.timers = setInterval(this.myTimer, 1000);
  5.   }
  6. });

在播放flv出现断流时,播放触发了定时器,定时器里面实现了播放器的创建和销毁。由于这一步操作短时间创建大量flv流请求,但是播放器并不知道flv流什么时候恢复正常,无法及时销毁这个定时任务。Chrome浏览器最多允许对同一个域名Host建立6个TCP连接,不同的浏览器有所区别,所以才导致浏览器出现崩溃。

如果想实现flv断流重连,可使用最新的easyplayer和保活通道接口配合来初始化播放器和销毁播放器。参考代码如下:

点击(此处)折叠或打开

  1. <EasyPlayer
  2.     ref="easyPlayer"
  3.     live
  4.     :aspect="aspect"
  5.     :onDemand="true"
  6.     :autoplay="autoplay"
  7.     v-loading="bLoading"
  8.     :loading.sync="bLoading"
  9.     :videoUrl="oldVideoUrl"
  10.     element-loading-text="加载中..."
  11.     element-loading-background="#000"
  12.     @message="$message"
  13.     fluent
  14.     stretch
  15.     @ended="onPlayEnded"
  16. />
  17. this.$refs.easyPlayer.initVideoJS();
  18. this.$refs.easyPlayer.destroyVideoJS()

                                   
阅读(744) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~