一、触发条件
1、从给定直播地址拉流 2、使用腾讯云的TcPlayer播放器 3、当网站允许flash时,如果给定的直播地址存在flv时,优先使用flash 4、播放器被隐藏二、问题描述
使用腾讯云的TcPlayer从给定的直播地址拉流,在初始化播放器时,播放器支持设置一个listener方法,可以监听流是否拉取成功。 刚开始时是把播放器设置display:none,隐藏起来的,因为还要展示一个未开始播放的状态,拉到流之后才需要展示播放器。 此时(播放器被隐藏)如果有m3u8的流(采用h5的video播放),是没问题的,可以正常通过listener函数监听,但是播放flv时,flash就无法通过listener函数监听到流的状态,必须要把display:none干掉才行。listener: function (msg) { if(msg.type == 'error') { console.log(msg, '播放报错'); _this.$emit('update-stream-state', 3); // 可以尝试5次拉流 if (_this.player) { timer = setTimeout(() => { _this.player && _this.player.load(); console.log('重试拉流'); }, 5000); setInterval(() => { clearTimeout(timer); }, 25000); } } else if (msg.type == 'play'){ // TODO console.log(msg, '拉流成功'); // 清楚拉流的定时器 clearTimeout(timer); _this.$emit('update-stream-state', 1); } }