video.js 动态切换视频流无效(FLV等类型)

起因: 需要动态切换FLV视频流,但是换了地址后,视频无法播放,使用的代码如下。(一些其他类型也可以通过下面方法解决问题)

//重置video的src
this.player.src(url);
//使video重新加载
this.player.load();

框架等: vue + video.js + videojs-flvjs-es6

解决方案: 切换地址的时候,将播放器的dom删除,然后添加新的dom,在重新初始化播放器就可以了。

代码:

HTML

<template>
    <div ref="videoPlayerBox" class="component">
        <video class="videoPlayer video-js"></video>
    </div>
</template>

JS 部分代码

// 初始化播放器
initPlayer () {
    this.$nextTick(() => {
        let playerOption = {
            preload: 'auto', // 预加载
            autoplay: true, // 自动播放
            controls: true,
            techOrder: ['html5', 'flvjs'],
            flvjs: {
                mediaDataSource: {
                    cors: true,
                    withCredentials: false,
                },
            },
            sources: [
                {
                    src: this.streamURL,
                    type: this.getType(this.streamType)	// 这里是自己写的方法,因为要切换多种流,所以不用在意
                }
            ],
        }

		// this.$el.querySelector('.videoPlayer') 这里也可以用其他的方法传递播放器要绑定的dom节点
        this.player = videojs(this.$el.querySelector('.videoPlayer'), playerOption, function onPlayerReady () {
            console.log('onPlayerReady', this)
        })
    })
},
// 重新加载播放器
loadPlayer () {
    // 重新创建播放器绑定dom
    this.$refs.videoPlayerBox.innerHTML = `<video class="videoPlayer video-js"></video>`
    this.$nextTick(() => {
    	// 重新初始化播放器
        this.initPlayer()
    })
},
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值