video-04-videojs配置及使用

videojs是一种轻框架,可以帮我们快速开发一个video视频组件

目录

 一、参考资料

二、引入videojs 

三、简单了解使用

四、配置项和事件

4.1 常用配置项

4.2 常用事件

4.3 常用方法

4.4 网络状态

4.5 播放状态

4.6 视频控制

五、实例(可直接复制) 


 一、参考资料

博主感觉英文文档有点yue

Video.js - Make your player yours | Video.js

https://www.cnblogs.com/afrog/p/4115377.html 

videojs中文文档详解_video.js_谢泽的网络日志的博客-CSDN博客

二、引入videojs 

<link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video-js.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video.min.js"></script>

三、简单了解使用

1.配置video标签:设置id 设置固定class(样式) class="video-js"

2.var player = videojs('定义的video标签的id',{配置项options},functon(){
//回调函数,通常在这里增加video标签的事件监听
}); 

///html
<video id="myvideo" autoplay="true"
        src="https://jf360videos.peopletech.cn/production/464f2fe20b1211ee83bef3d9bb3dfecd_1_video.mp4" class="video-js" controls>
    </video>
///js
var player = videojs('myvideo',{
    muted: true,
	controls : true/false,      
	height:300, 
	width:300,
	loop : true,
	// 更多配置.....
},functon(){
//回调函数
});

四、配置项和事件

4.1 常用配置项

            autoplay: false, //自动播放:true/false
            controls: true, //是否显示底部控制栏:true/false
            width: 300, //视频播放器显示的宽度
            height: 300, //视频播放器显示的高度
 	 		loop: false, //是否循环播放:true/false
            muted: false, //设置默认播放音频:true/false
            poster:"", //视频开始播放前显示的图像的URL。这通常是一个帧的视频或自定义标题屏幕。一旦用户点击“播放”图像就会消失
            src:"", //要嵌入的视频资源url,The source URL to a video source to embed.
            techOrder: ['html5', 'flash'], //使用播放器的顺序,下面的示例说明优先使用html5播放器,如果不支持将使用flash
            notSupportedMessage: false, //是否允许重写默认的消息显示出来时,video.js无法播放媒体源
            plugins: {}, //插件
            sources: [{src: '//path/to/video.mp4', type: 'video/mp4'}] //资源文件等价于html中的形式source标签 
            aspectRatio:"1:1" //将播放器置于流体模式下,计算播放器动态大小时使用该值。
             				  //该值应该是比用冒号隔开的两个数字(如“16:9”或“4:3”)。
            fluid: false,	//是否自适应布局,播放器将会有流体体积。换句话说,它将缩放以适应容器。
            				// 如果<video>标签有“vjs-fluid”样式时,这个选项会自动设置为true。
            preload: "metadata", //建议浏览器是否在加载<video>元素时开始下载视频数据。(预加载)
					//auto:立即加载视频(如果浏览器支持它)。一些移动设备将不会预加载视频,以保护用户的带宽/数据使用率。这就是为什么这个值被称为“自动”,而不是更确凿的东西
					// metadata:只加载视频的元数据,其中包括视频的持续时间和尺寸等信息。有时,元数据会通过下载几帧视频来加载。
					//none

4.2 常用事件

// var myPlayer = this;
        //在回调函数中,this代表当前播放器,
        //可以调用方法,也可以绑定事件。
        /**
         * 事件events    绑定事件用on    移除事件用off
         */
        this.on('suspend', function () {//延迟下载
            console.log("延迟下载")
        });
        this.on('loadstart', function () { //客户端开始请求数据
            console.log("客户端开始请求数据")
        });
        this.on('progress', function () {//客户端正在请求数据
            console.log("客户端正在请求数据")
        });
        this.on('abort', function () {//客户端主动终止下载(不是因为错误引起)
            console.log("客户端主动终止下载")
        });
        this.on('error', function () {//请求数据时遇到错误
            console.log("请求数据时遇到错误")
        });
        this.on('stalled', function () {//网速失速
            console.log("网速失速")
        });
        this.on('play', function () {//开始播放
            console.log("开始播放")
        });
        this.on('pause', function () {//暂停
            console.log("暂停")
        });
        this.on('loadedmetadata', function () {//成功获取资源长度
            console.log("成功获取资源长度")
        });
        this.on('loadeddata', function () {//渲染播放画面
            console.log("渲染播放画面")
        });
        this.on('waiting', function () {//等待数据,并非错误
            console.log("等待数据")
        });
        this.on('playing', function () {//开始回放
            console.log("开始回放")
        });
        this.on('firstplay', function () {//开始回放
            console.log("首次播放")
        });
        this.on('canplay', function () {//可以播放,但中途可能因为加载而暂停
            console.log("可以播放,但中途可能因为加载而暂停")
        });
        this.on('canplaythrough', function () { //可以播放,歌曲全部加载完毕
            console.log("可以播放,歌曲全部加载完毕")
        });
        this.on('seeking', function () { //寻找中
            console.log("寻找中")
        });
        this.on('seeked', function () {//寻找完毕
            console.log("寻找完毕")
        });
        this.on('timeupdate', function () {//播放时间改变
            console.log("播放时间改变")
        });
        this.on('ended', function () {//播放结束
            console.log("播放结束")
        });
        this.on('ratechange', function () {//播放速率改变
            console.log("播放速率改变")
        });
        this.on('fullscreenchange', function () {//播放速率改变
            console.log("全屏切换改变")
        });
        this.on('durationchange', function () {//资源长度改变
            console.log("资源长度改变")
        });
        this.on('volumechange', function () {//音量改变
            console.log("音量改变")
        });

4.3 常用方法

/
播放:myPlayer.play();
暂停:myPlayer.pause();
获取播放进度:var whereYouAt = myPlayer.currentTime();
设置播放进度:myPlayer.currentTime(120);
视频持续时间,加载完成视频才可以知道视频时长,且在flash情况下无效: var howLongIsThis = myPlayer.duration();
缓冲,就是返回下载了多少: `var whatHasBeenBuffered = myPlayer.buffered();
百分比的缓冲: var howMuchIsDownloaded = myPlayer.bufferedPercent();
声音大小(0-1之间): var howLoudIsIt = myPlayer.volume();
设置声音大小: myPlayer.volume(0.5);
取得视频的宽度: var howWideIsIt = myPlayer.width();
设置宽度:myPlayer.width(640);
获取高度: var howTallIsIt = myPlayer.height();
设置高度:: myPlayer.height(480);
一步到位的设置大小:myPlayer.size(640,480);
全屏: myPlayer.requestFullscreen();
离开全屏 : myPlayer.exitFullscreen();
/
autoplay
buffered
bufferedEnd
bufferedPercent
cancelFullScreen deprecated
controls
currentSrc
currentTime
currentType
dispose //清理
duration
ended //结束
error //错误
exitFullscreen //退出全屏
init
isFullScreen deprecated 废弃
isFullscreen
language
load
loop //循环
muted 静音
pause 暂停
paused //检测是否暂停的状态
play
playbackRate
poster //静态图片
preload
remainingTime //余下时间
requestFullScreen deprecated
requestFullscreen
seeking
src
volume
addChild inherited
addClass inherited
buildCSSClass inherited
children inherited
contentEl inherited
createEl inherited
dimensions inherited
el inherited
enableTouchActivity inherited
getChild inherited
getChildById inherited
hasClass inherited
height inherited
hide inherited
id inherited
initChildren inherited
name inherited
off inherited
on inherited
one inherited
options inherited
player inherited
ready inherited
removeChild inherited
removeClass inherited
show inherited
trigger inherited
triggerReady inherited
width inherited

4.4 网络状态

myPlayer.currentSrc; //返回当前资源的URL
myPlayer.src = value; //返回或设置当前资源的URL
myPlayer.canPlayType(type); //是否能播放某种格式的资源
myPlayer.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
myPlayer.load(); //重新加载src指定的资源
myPlayer.buffered; //返回已缓冲区域,TimeRanges
myPlayer.preload; //none:不预载 metadata:预载资源信息 auto:立即加载视频

4.5 播放状态

    myPlayer.currentTime = value; //当前播放的位置,赋值可改变位置
    myPlayer.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0
    myPlayer.duration; //当前资源长度 流返回无限
    myPlayer.paused; //是否暂停
    myPlayer.defaultPlaybackRate = value;//默认的回放速度,可以设置
    myPlayer.playbackRate = value;//当前播放速度,设置后马上改变
    myPlayer.played; //返回已经播放的区域,TimeRanges,关于此对象见下文
    myPlayer.seekable; //返回可以seek的区域 TimeRanges
    myPlayer.ended; //是否结束
    myPlayer.autoPlay; //是否自动播放
    myPlayer.loop; //是否循环播放

4.6 视频控制

    myPlayer.controls;//是否有默认控制条
    myPlayer.volume = value; //音量
    myPlayer.muted = value; //静音
    TimeRanges(区域)对象
    TimeRanges.length; //区域段数
    TimeRanges.start(index) //第index段区域的开始位置
    TimeRanges.end(index) //第index段区域的结束位置

五、实例(可直接复制) 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>电视台</title>
    <!--引入video.js文件-->
    <link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video-js.min.css" rel="stylesheet">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video.min.js"></script>
</head>

<body>
    <section id="videoPlayer">
        <video id="example-video" class="video-js vjs-default-skin vjs-big-play-centered">
        </video>
    </section>
    <br />
    <button class="control" onclick=operation("play")>播放</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("stop")>停止</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("reload")>重载</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("reset")>重置</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("fastForward")>快进</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("back")>后退</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("volumeUp")>音量+</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("volumeDown")>音量-</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("fullScreen")>全屏</button>&nbsp&nbsp&nbsp&nbsp&nbsp
    <button class="control" onclick=operation("exitFullScreen")>退出全屏</button><br /><br /><br />
</body>

</html>
<script type="text/javascript">
    //      	video标签id,
    //      	配置选项(data-setup='{}'),
    //      	videojs初始化完成回调函数
    var myPlayer = videojs('example-video', {
        title: 'Oceans',
        autoplay: true, // 设置自动播放
        muted: true, // 设置了它为true,才可实现自动播放,同时视频也被静音 (Chrome66及以上版本,禁止音视频的自动播放)
        preload: 'auto', // 预加载
        controls: true, // 显示播放的控件
        fluid: true, // 自适应宽高
        playbackRates: [0.5, 1, 1.5, 2, 3, 4],
        "sources": [{
            src: 'https://jf360videos.peopletech.cn/production/464f2fe20b1211ee83bef3d9bb3dfecd_1_video.mp4',
            type: 'video/mp4'
        }],
        controlBar: {
            // 设置控制条组件
            currentTimeDisplay: true,
            timeDivider: true,
            durationDisplay: true,
            remainingTimeDisplay: true,
            volumePanel: {
                inline: true
            },
            children: [{
                name: 'playToggle'
            }, // 播放/暂停按钮
            {
                name: 'currentTimeDisplay'
            }, // 视频当前已播放时间
            {
                name: 'progressControl'
            }, // 播放进度条
            {
                name: 'durationDisplay'
            }, // 视频播放总时间
            {
                // 倍速播放
                name: 'playbackRateMenuButton',
                playbackRates: [0.5, 1, 1.5, 2]
            },
            {
                name: 'volumePanel', // 音量控制
                inline: false // 不使用水平方式
            },
            {
                name: 'FullscreenToggle'
            } // 全屏
            ]
        }
    }, function onPlayerReady() {
        // var myPlayer = this;
        //在回调函数中,this代表当前播放器,
        //可以调用方法,也可以绑定事件。
        /**
         * 事件events    绑定事件用on    移除事件用off
         */
        this.on('suspend', function () {//延迟下载
            console.log("延迟下载")
        });
        this.on('loadstart', function () { //客户端开始请求数据
            console.log("客户端开始请求数据")
        });
        this.on('progress', function () {//客户端正在请求数据
            console.log("客户端正在请求数据")
        });
        this.on('abort', function () {//客户端主动终止下载(不是因为错误引起)
            console.log("客户端主动终止下载")
        });
        this.on('error', function () {//请求数据时遇到错误
            console.log("请求数据时遇到错误")
        });
        this.on('stalled', function () {//网速失速
            console.log("网速失速")
        });
        this.on('play', function () {//开始播放
            console.log("开始播放")
        });
        this.on('pause', function () {//暂停
            console.log("暂停")
        });
        this.on('loadedmetadata', function () {//成功获取资源长度
            console.log("成功获取资源长度")
        });
        this.on('loadeddata', function () {//渲染播放画面
            console.log("渲染播放画面")
        });
        this.on('waiting', function () {//等待数据,并非错误
            console.log("等待数据")
        });
        this.on('playing', function () {//开始回放
            console.log("开始回放")
        });
        this.on('canplay', function () {//可以播放,但中途可能因为加载而暂停
            console.log("可以播放,但中途可能因为加载而暂停")
        });
        this.on('canplaythrough', function () { //可以播放,歌曲全部加载完毕
            console.log("可以播放,歌曲全部加载完毕")
        });
        this.on('seeking', function () { //寻找中
            console.log("寻找中")
        });
        this.on('seeked', function () {//寻找完毕
            console.log("寻找完毕")
        });
        this.on('timeupdate', function () {//播放时间改变
            console.log("播放时间改变")
        });
        this.on('ended', function () {//播放结束
            console.log("播放结束")
        });
        this.on('ratechange', function () {//播放速率改变
            console.log("播放速率改变")
        });
        this.on('durationchange', function () {//资源长度改变
            console.log("资源长度改变")
        });
        this.on('volumechange', function () {//音量改变
            console.log("音量改变")
        });
    });
    /**
     * 方法
     */
    function operation(param) {
        console.log(param)
        if ("play" == param) {	//开始播放
            myPlayer.play();
        } else if ("stop" == param) {	//停止播放
            myPlayer.pause();
        } else if ("fastForward" == param) { //快进
            var whereYouAt = myPlayer.currentTime();
            myPlayer.currentTime(10 + whereYouAt);
        } else if ("reload" == param) {	//重新加载
            myPlayer.pause();
            myPlayer.load();
            myPlayer.play();
        } else if ("back" == param) {	//后退
            var whereYouAt = myPlayer.currentTime();
            myPlayer.currentTime(whereYouAt - 10);
        } else if ("fullScreen" == param) {	//全屏
            myPlayer.enterFullScreen();
        } else if ("exitFullScreen" == param) {	//退出全屏
            myPlayer.enterFullScreen();
        } else if ("volumeUp" == param) {	//音量加
            var howLoudIsIt = myPlayer.volume();
            myPlayer.volume(howLoudIsIt + 10);
        } else if ("volumeDown" == param) {	//音量减
            var howLoudIsIt = myPlayer.volume();
            console.log(howLoudIsIt)
            myPlayer.volume(howLoudIsIt - 10);
        } else if ("reset" == param) {	//重置,视频不会播放	
            myPlayer.reset();
        }
    }
</script>

六、到这里videojs基本已经学完了,OK下面将继续讲解关于videojs实现一些特殊花里胡哨的操作 

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
vue-video-player是一个基于Vue.js的视频播放器组件库,在Vue项目中使用该组件可以方便地实现视频播放功能。而flv.js是一个JavaScript实现的FLV视频解码器,可以在浏览器中播放FLV格式的视频文件。 在使用vue-video-player组件时,如果需要播放FLV格式的视频,可以结合flv.js来实现。首先,需要在Vue项目中引入flv.js的依赖库,可以通过npm安装或者在页面中直接引入flv.js的脚本文件。然后,在vue-video-player组件中配置相应的参数,使其支持FLV格式的视频。 假设已经引入了flv.js的依赖库,首先需要在Vue组件中注册vue-video-player组件。然后,在组件中通过设置config参数来配置播放器。其中,需要注意的是,将配置参数中的type设置为'flv',表示要播放的视频是FLV格式的。另外,还需要设置url参数,指定FLV视频的URL地址。 以下是一个简单的示例代码: ``` <template> <vue-video-player ref="videoPlayer" :options="playerOptions"></vue-video-player> </template> <script> import VueVideoPlayer from 'vue-video-player' import 'video.js/dist/video-js.css' export default { components: { VueVideoPlayer }, data() { return { playerOptions: { techOrder: ['flvjs'], sources: [{ type: 'flv', src: 'http://example.com/video.flv' }] } } } } </script> ``` 在上述代码中,首先导入了vue-video-player组件库,并设置了相关的样式。然后,在组件的data中定义了一个playerOptions对象,其中的techOrder属性按照数组顺序指定了优先使用flv.js来播放视频。接着,在sources数组中设置了一个FLV格式视频的URL地址。 最后,在模板中引用vue-video-player组件,并通过:options属性将playerOptions传递给组件。这样配置完毕后,组件就可以正常地播放FLV格式的视频了。 总结起来,vue-video-player与flv.js配合使用可以实现Vue项目中对FLV视频的播放。通过合理配置参数,我们可以在Vue项目中方便地使用vue-video-player来播放FLV视频。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_揽

苦der程序员敲代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值