videojs和Video的属性事件

来源:csdn博客 分类: 文章浏览史 发布时间:2021-10-20 11:36:54 最后更新:2021-10-20 浏览:862
转载声明:
本文为摘录自“csdn博客”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2021-10-20 11:36:54

1.引入video.js和video-js.css

<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.2 使用video标签添加样式‘video-js’

 <video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264"
         poster="http://vjs.zencdn.net/v/oceans.png">
    <source src="http://vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
  </video>

1.3 JS里调用

var options = {};
 
var player = videojs(‘example_video_1‘, options, function onPlayerReady() {
  videojs.log(‘播放器已经准备好了!);
 
  // In this context, `this` is the player that was created by Video.js.<br>  // 注意,这个地方的上下文, `this` 指向的是Video.js的实例对像player
  this.play();
 
  // How about an event listener?<br>  // 如何使用事件监听?
  this.on(‘ended‘, function() {
    videojs.log(‘播放结束了!);
  });
});

1.4 常见options成员(写在option这个对象中)

  • autoplay : true/false
    播放器准备好之后,是否自动播放,默认false

  • controls : true/false
    是否拥有控制条 ,默认true
    如果设为false ,界面上不会出现任何控制按钮,那么只能通过api进行控制了

  • height: 字符串或数字(字符串带单位)
    视频容器的高度,比如: height:300 or height:‘300px’

  • width: 字符串或数字
    视频容器的宽度, 单位像素

  • loop : true/false
    视频播放结束后,是否循环播放

  • muted : true/false
    是否静音

  • poster: 通常传入一个URL
    播放前显示的视频画面,播放开始之后自动移除。

  • preload: ‘auto’/ ‘metadata’ / ‘none’
    预加载

  • auto-自动
    metadata-元数据信息 ,比如视频长度,尺寸等
    none-不预加载任何数据,直到用户开始播放才开始下载

  • children: Array | Object
    可选子组件
    从基础的Component组件继承而来的子组件
    数组中的顺序将影响组件的创建顺序
    整后会生成的dom少一些,加载也快一些
    播放器在html中的常见的组件元素
    在这里插入图片描述

  • sources:Array
    sources: [{ src: ‘…mp4’, type: ‘video/mp4’}, { src: ‘…webm’, type: ‘video/webm’}]
    资源文件
    等价于html中的

  • techOrder: [‘html5’]
    默认为[‘html5’],'flash’可以有,比如 [‘html5’, ‘flash’]
    在v6.0.0 及以上的版本中,默认不包含flash的使用代码。如果要使用flash播放的,需要手动引入flash相关逻辑的代码。且需要指定swf文件的路径。
    在这里插入图片描述

  • plugins:自动初始化要加载的插件

1.5 videojs的一些监听事件汇总

var playerVideo = videojs("my-player", options, function onPlayerReady() {
    videojs.log('Your player is ready!');
    
    this.on("loadstart",function(){
        console.log("开始请求数据 ");
    })
    this.on("progress",function(){
        console.log("正在请求数据 ");
    })
    this.on("loadedmetadata",function(){
        console.log("获取资源长度完成 ")
    })
    this.on("canplaythrough",function(){
		console.log("视频源数据加载完成")
    })
    this.on("waiting", function(){
        console.log("等待数据")
    });
    this.on("play", function(){
		console.log("视频开始播放")
    });
    this.on("playing", function(){
        console.log("视频播放中")
    });
    this.on("pause", function(){
        console.log("视频暂停播放")
    });
    this.on("ended", function(){
        console.log("视频播放结束");
    });
    this.on("error", function(){
        console.log("加载错误")
    });
    this.on("seeking",function(){
        console.log("视频跳转中");
    })
    this.on("seeked",function(){
        console.log("视频跳转结束");
    })
	this.on("ratechange", function(){
        console.log("播放速率改变")
    });
    this.on("timeupdate",function(){
        console.log("播放时长改变");
    })
    this.on("volumechange",function(){
        console.log("音量改变");
    })
    this.on("stalled",function(){
        console.log("网速异常");
    })
   
    
});

1.6 手动控制播放条的显示和隐藏

video.on(‘tap’, function(){
if (player.userActive() === true) {
player.userActive(false);
} else {
player.userActive(true);
}
});

2. video 属性与方法

//错误状态  
   Media.error; //null:正常  
   Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效  
  
//网络状态  
   Media.currentSrc; //返回当前资源的URL  
   Media.src = value; //返回或设置当前资源的URL  
   Media.canPlayType(type); //是否能播放某种格式的资源  
   Media.networkState; //0.此元素未初始化  1.正常但没有使用网络  2.正在下载数据  3.没有找到资源  
   Media.load(); //重新加载src指定的资源  
   Media.buffered; //返回已缓冲区域,TimeRanges  
   Media.preload; //none:不预载 metadata:预载资源信息 auto:  
  
//准备状态  
   Media.readyState;    //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA  
   Media.seeking; //是否正在seeking  
  
//回放状态  
   Media.currentTime = value; //当前播放的位置,赋值可改变位置  
   Media.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0  
   Media.duration; //当前资源长度 流返回无限  
   Media.paused; //是否暂停  
   Media.defaultPlaybackRate = value;//默认的回放速度,可以设置  
   Media.playbackRate = value;//当前播放速度,设置后马上改变  
   Media.played; //返回已经播放的区域,TimeRanges,关于此对象见下文  
   Media.seekable; //返回可以seek的区域 TimeRanges  
   Media.ended; //是否结束  
Media.autoPlay; //是否自动播放  
Media.loop; //是否循环播放  
   Media.play();    //播放  
   Media.pause();   //暂停  
  
//控制  
Media.controls;//是否有默认控制条  
   Media.volume = value; //音量  
   Media.muted = value; //静音  
  
   //TimeRanges(区域)对象  
TimeRanges.length; //区域段数  
TimeRanges.start(index) //第index段区域的开始位置  
TimeRanges.end(index) //第index段区域的结束位置

3. video 事件列表

var media_events=new Array();  
// was extracted from the spec in November 2011  
media_events["loadstart"]=0;  
media_events["progress"]=0;  
media_events["suspend"]=0;  
media_events["abort"]=0;  
media_events["error"]=0;  
media_events["emptied"]=0;  
media_events["stalled"]=0;  
media_events["loadedmetadata"]=0;  
media_events["loadeddata"]=0;  
media_events["canplay"]=0;  
media_events["canplaythrough"]=0;  
media_events["playing"]=0;  
media_events["waiting"]=0;  
media_events["seeking"]=0;  
media_events["seeked"]=0;  
media_events["ended"]=0;  
media_events["durationchange"]=0;  
media_events["timeupdate"]=0;  
media_events["play"]=0;  
media_events["pause"]=0;  
media_events["ratechange"]=0;  
media_events["volumechange"]=0;  
var media_controller_events=new Array();  
// was extracted from the spec in November 2011  
media_controller_events["emptied"]=0;  
media_controller_events["loadedmetadata"]=0;  
media_controller_events["loadeddata"]=0;  
media_controller_events["canplay"]=0;  
media_controller_events["canplaythrough"]=0;  
media_controller_events["playing"]=0;  
media_controller_events["ended"]=0;  
media_controller_events["waiting"]=0;  
media_controller_events["durationchange"]=0;  
media_controller_events["timeupdate"]=0;  
media_controller_events["play"]=0;  
media_controller_events["pause"]=0;  
media_controller_events["ratechange"]=0;  
media_controller_events["volumechange"]=0;

备注:修改H5 中video默认 的样式

//全屏按钮
video::-webkit-media-controls-fullscreen-button {
   display: none;
}
//播放按钮
video::-webkit-media-controls-play-button {
  //display: none;
}
//进度条
video::-webkit-media-controls-timeline {
   //display: none;
}
//观看的当前时间
video::-webkit-media-controls-current-time-display{
   display: none;
}
//剩余时间
video::-webkit-media-controls-time-remaining-display {
   display: none;
}
//音量按钮
video::-webkit-media-controls-mute-button {
   //display: none;
}
video::-webkit-media-controls-toggle-closed-captions-button {
  // display: none;
}
//音量的控制条
video::-webkit-media-controls-volume-slider {
  // display: none;
}
//所有控件
video::-webkit-media-controls-enclosure{
  // display: none;
}
video::-webkit-media-controls-overlay-enclosure{
  display: none;
}
video::-internal-media-controls-loading-panel{
  display: none;opacity: 0;visibility: hidden;width: 0px;height: 0px;
  border: 2px crimson solid;
}
php技术微信