一次基于Vue的Vedio.js使用

遇到的问题

1.由于采用了分页,所以在两次切回到较小的页码时,会有warning警告,提示player对象已经被初始化过。

2.如果调用对象销毁之后,对应的DOM节点也同时会被销毁,根据id获取节点会报找不到对应元素

//以下是解决方法
      initVedio() {
   

            //初始化视频方法 循环列表获取每个视频的id
                if(this.tableData.length>0){
   
                    //在初始化vedio前要先重置相应的节点,否则切换页码后,视频可能依旧显示之前页码的内容
                    this.initVedioHtml();
                    this.tableData.map((item,i)=>{
   
                        //由于切换页面只去走updated()方法,不会走beforeDestroy(),所以在初始化前先进行对象销毁
                        if(this.$video.players['myVideo'+item.id]){
   this.$video.players['myVideo'+item.id].dispose()}
                        let player = this.$video('myVideo'+item.id, {
   
                            //确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。
                            controls: true,
                            //自动播放属性,muted:静音播放
                            autoplay: false,
                            //建议浏览器是否应在<video>加载元素后立即开始下载视频数据。
                            preload: false,

                            //设置视频播放器的显示宽度(以像素为单位)
                            width: "500px",
                            //设置视频播放器的显示高度(以像素为单位)
                            height: "250px",
                            //封面图
                            poster: "",
                            controlBar: {
   
                                timeDivider: true,
                                durationDisplay: false,
                                remainingTimeDisplay: false,
                                fullscreenToggle: true // 全屏按钮
                            }
                        });
                        // this.playerList.push(player)
                        let data = {
   
                            src:item.networkPathURL,
                            type:'video/mp4'
                        };

                        player.src(data);
                        player.load(data);
                        player.pause(); 
                    })
                }
        },
       initVedioHtml(){
   
            if(this.tableData.length>0){
   
                this.tableData.map((item,i)=> {
   
                    let myVideoDiv = document.getElementById('myVideo' + i);
                        let vH = "<video id='myVideo" + item.id + "' class='video-js vjs-default-skin vjs-big-play-centered'></video>"
                        myVideoDiv.innerHTML = vH;
                })
            }
        },

最后附上页面完整代码:

<template>
    <div>

        <div class='handle-box'>
            <el-input v-model='query.title' placeholder='参赛作品名称' class='handle-input mr10'></el-input>
            <el-input v-model='query.songer' placeholder='朗读者' class='handle-input mr10'></el-input>
            <el-button type='primary' icon='el-icon-search' @click='handleSearch'>搜索</el-button>
        </div>
        <el-divider></el-divider>

        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值