首页 > 其他分享 >video.js问题总结

video.js问题总结

时间:2022-09-29 17:48:30浏览次数:53  
标签:总结 refs js player video import videojs

video.js问题总结

在vue项目中采用video.js作为视频播放组件。出现以下问题:

无法播放(点击无效)

如下代码,UI正常显示,点击播放按钮无法播放。

<video ref="video" src="xxxxxx" class="video-js" controls>
    
</video>

<script>
    import videojs from "video.js"
	import "video.js/dist/video-js.css";
	export default {
        data() {
            return {
                player: null;
            }
        }
        mounted() {
            this.player = videojs(this.$refs.video);
        }
    }
</script>

解决方案:在video标签内添加source标签,将视频资源交给source标签控制。

<video ref="video" class="video-js" controls>
    <source src="xxxxxx">
</video>

<script>
    import videojs from "video.js"
	import "video.js/dist/video-js.css";
	export default {
        data() {
            return {
                player: null;
            }
        }
        mounted() {
            this.player = videojs(this.$refs.video);
        }
    }
</script>

动态设置资源地址,播放报错

source标签src属性改变,如下代码会导致video.js报错

<video ref="video" class="video-js" controls>
    <source :src="this.srcAddress">
</video>

<script>
    import videojs from "video.js"
	import "video.js/dist/video-js.css";
	export default {
        props: {
            srcAddress: {
                required: true,
                type: String,
                default: "xxxxxxx"
            }
        }
        data() {
            return {
                player: null;
            }
        }
        mounted() {
            this.player = videojs(this.$refs.video);
        }
    }
</script>

解决方案:每次需要改变video地址的时候重新渲染element

<div ref="videoDiv">
</div>


<script>
    import videojs from "video.js"
	import "video.js/dist/video-js.css";
	export default {
        props: {
            srcAddress: {
                required: true,
                type: String,
                default: "xxxxxxx"
            }
        }
        data() {
            return {
                player: null;
                srcPath: null;
            }
        }
    	watch: {
            srcAddress: {
                handler(val) {
                    if (this.srcPath != this.srcAddress) {
                        this.srcPath = this.srcAddress;
                        this.initVideo();
                    }
                }
            }
        }
        mounted() {
            this.initVideo();
        }
    	methods: {
            initVideo() {
                let this.$refs.videoDiv.innerHTML = 
                    // 下面两种方法都无法实现有效识别。使用id获取element有id冲突,而vue的$refs对象无法在dom渲染结束后修改
                    // '<video id="video" class="video-js" controls' +
                    // '<video ref="video" class="video-js" controls' +
                    '<video class="video-js" controls' +
                    '<source src="this.srcPath" type="video/mp4">' +
                    '<source src="this.srcPath" type="video/ogg">' +
                    '</video>'
                // 最终只能使用$refs.videoDiv的子元素作为参数
                // this.player = videojs("video");
                // this.player = videojs(this.$refs.video);
                this.player = videojs(this.$refs.videoDiv.firstElementChild);
            }
        }
    }
</script>

长视频点击进度条导致进度归零重新播放

在解决上述一系列问题后,发现点击视频进度条视频进度归零的问题。6min长度的视频会发生这种问题,而3s的视频可以正常拖动进度条。

目前尚无法解决。

标签:总结,refs,js,player,video,import,videojs
From: https://www.cnblogs.com/wenzhao/p/16742392.html

相关文章

  • 返回Json对象不忽略null值SerializerFeature.WriteMapNullValue)
    Fastjson的SerializerFeature序列化属性QuoteFieldNames———-输出key时是否使用双引号,默认为trueWriteMapNullValue——–是否输出值为null的字段,默认为falseWriteN......
  • js 创建数组 创建对象 删除数组指定对象
    varmaterielArr=[];//创建数组 varmateriel={};//创建对象 //添加到数组materiel.cInvCode=cInvCode;materiel.quantity=quantity;materiel.orderTyp......
  • vue项目通过xlsx-js-style导出数据为EXCEL
    排除工具xlsx(sheet.js):缺点:社区版无法自定义格式,需要购买pro版本xlsx-style:缺点:代码多年未更新,存在bug,需要改动node_modules包 选用工具安装xlsx-js-stylenpmi......
  • JS 操作符
    JS中的操作符与其他语言大体上是相似的,这里总结一些需要注意的地方.一元操作符一元加(+)在数值前面放置​​+​​​对数值没有任何影响,对非数值使用​​+​​​,具有​​Num......
  • JS Element.scrollIntoView() 滚动元素的父容器
    Element接口的scrollIntoView()方法会滚动元素的父容器,使被调用scrollIntoView()的元素对用户可见。文档语法element.scrollIntoView();//等同于element.scrollIntoView(......
  • JS 正则表达式
    普通字符普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。字符描述[ABC]匹配 [...] 中......
  • 19.JS的标签查找
    1.getElementById(通过ID查找)2.getElementsByClassName(通过类名查找)3.getElementsByTagName(通过标签名查找)4.getElementsByName(通过Name属性查找)例:document.get......
  • debian/ubuntu下安装nodejs npm
    wgethttps://nodejs.org/dist/v16.17.1/node-v16.17.1-linux-x64.tar.xz nodejs官网下载地址,目前最新版,以后有更新就换新的地址,wget下来,解压tar-xvfnode-v16.17.1-li......
  • 22.实例:利用JS点击百度翻译
    Dimtemp,hWeb,sRet,待翻译的文字//变量赋值待翻译的文字="早上好"//绑定浏览器hWeb=WebBrowser.BindBrowser("chrome",10000,{"bContinueOnError":false,"......
  • JavaScript ES6常用基础知识总结
    ​ES6let与const及其相关块级作用域ES6新增了块级作用域,总结一句话大致就是:大括号{}包起来的代码块基本山都可以当做块级作用域。常见的有直接使用{}包起来:{vara=4}函数......