videojs 使用教程
@(视频)
(videojs官网)[http://docs.videojs.com/]
新手入门使用
你的第一个demo:
<head>
<link href="http://vjs.zencdn.net/5.10.4/video-js.css" rel="stylesheet">
<!-- 如果要支持ie8,引入下面的代码 -->
<script src="http://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script>
</head>
<body>
<video id="my-video" class="video-js" controls preload="auto" width="640" height="264"
poster="MY_VIDEO_POSTER.jpg" data-setup="{}">
<source src="MY_VIDEO.mp4" type=\'video/mp4\'>
<source src="MY_VIDEO.webm" type=\'video/webm\'>
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a web browser that
<a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
</p>
</video>
<script src="http://vjs.zencdn.net/5.10.4/video.js"></script>
</body>
入门使用:
1 通过 html 的类名和 data-setup初始化 视频播放器
- step1 引入videojs 的相关库文件
<link href="//example.com/path/to/video-js.min.css" rel="stylesheet">
<script src="//example.com/path/to/video.min.js"></script>
<script>
<!--f指出lash 播放视频的swf文件的路径-->
videojs.options.flash.swf = "http://example.com/path/to/video-js.swf"
</script>
- step2
使用 h5 播放视频的是,你只需嵌入 video 标签,videojs 会让视频在所有浏览器中兼容播放。
除了 vide 标签,你还需要设置:- data-setup videojs 会根据data-setup中的json参数来初始化视频播放器
- 每个video 标签都应该id属性,且 id 属性在整个页面中是唯一的
- class属性
1)video-js类名字是必须的,因为videoj用这个类名做功能性操作,比如控制视频播放器皮肤的样式
2)默认皮肤:vjs-default-skin
2动态载入html 设置视频播放器
//eleId的地方可以放置dom元素或者是 eleId 的选择器
videojs(\'eleId\',{
//像data-setup那样设置的参数
},function(){
//视频播放器初始化完毕,就会调用这个回调函数
}
Options参数
直接嵌入一个video标签就可以构造一个videojs 的视频播放器。videojs 在设置参数上做了一些操作,使得你能够用h5 的video标准标签属性来设置初始化videojs播放器的初始化选项(options).
比如你这样初始化视频播放器选项:
<video controls autoplay preload="auto" ...>
就等价于:
<video data-setup=\'{ "controls": true, "autoplay": false, "preload": "auto" }\'...>
( 注意:data-setup是json的数据格式)
一些属性:
- preload
auto: 立即加载视频的文件(如果浏览器允许),在ios设备上,会阻止自动加载。
metadata:Load only the meta data of the video
none:等待用户交互了才回加载视频文件
常见的基础API
//获取到返回回来到视频播放器
var videoPlayer = videojs(\'eleId\',{},function(){
//手动设置视频播放器的视频源
player.src(\'\');
});
//播放与暂停播放
videoPlayer.play();
videoPlayer.pause();
//设置/获取视频的当前播放时间
videoPlayer.currentTime();
videoPlayer.currentTime(120);
//视频总的时常
videoPlayer.duration();
//获取或设置播放器的视频源
videoPlayer.src();
videoPlayer.src(\'www.baidu.mp4\')
//获取或者设置视频播放器的poster 图片
videoPlayer.poster();
videoPlater.poster(\'xxx.jpg\');
//
videojs的事件列表
durationchange
ended
error
firstplay
fullscreenchange
loadedalldata
loadeddata
loadedmetadata
loadstart
pause
play
progress
timeupdate
volumechange
resize
绑定事件使用 on,比如
videoPlayer.on(\'play\',function(){
});
视频播放器皮肤调整
- 实现响应式播放
.video-js {
width: 80%;
margin: 0 auto;
}
.video-js .vjs-tech {
//这行代码最为关键,这样视频播放器的外层容器都由视频内容本身撑大
position: relative;
}
有时候,videojs 会默认生成 style标签影响样式,
可以使用下面的代码来避免这个问题:
$(\'.vjs-styles-defaults\').remove();
$(\'.vjs-styles-dimensions\').remove();
这段js 代码也能避免视频黑框的问题
- 实现视频播放按钮,暂停播放按钮和重播按钮点显示
-
居中显示视频播放器:给video标签添加类名:video-js vjs-big-play-centered
-
关于视
- 视频播放按钮的样式的调整
.video-js .vjs-big-play-button {
调整按钮的大小,圆角率,
}
.video-js .vjs-big-play-button:before{
//调整播放按钮中间的小三角型的大小
font-size值是宽度的一半最为合适
}
居中显示视频播放器按钮的时候,调整样式让按钮居中显示
.vjs-big-play-centered .vjs-big-play-button {
}
.video-js {
/*position: relative;*/
width: 80%;
margin: 0 auto;
}
.video-js .vjs-tech {
position: relative;
}
.video-js .vjs-big-play-button {
border-radius: 50%;
width: 8em;
height: 8em;
line-height: 8em;
font-size: 1em;
}
.video-js .vjs-big-play-button:before {
font-size: 4.5em;
}
// 视频已经播放过了
.vjs-has-started .vjs-big-play-button {
/*display: block!important;*/
}
//视频播放过程中
.vjs-playing .vjs-big-play-button {
display: none;
}
//视频暂停播放
.vjs-paused .vjs-big-play-button {
display: block;
}
//视频播放结束了
.vjs-ended .vjs-big-play-button {}
- 针对手机进行的样式处理
隐藏视频的播放按钮:
*::-webkit-media-controls-panel {
display: none!important;
-webkit-appearance: none;
}
/* Old shadow dom for play button */
*::--webkit-media-controls-play-button {
display: none!important;
-webkit-appearance: none;
}
/* New shadow dom for play button */
/* This one works */
*::-webkit-media-controls-start-playback-button {
display: none!important;
-webkit-appearance: none;
}
默认隐藏掉原生的视频播放按钮会带来一个问题:
在 ios 设备上,视频要点击vjs-big-play-button两次才能播放视频,目前sina网用的是原生的video标签,腾讯和搜狐用的是自己的移动端视频播放器。
在ipad上可以使用videojs作为视频播放器,ipad 上视频播放器的皮肤是奇效的。
整体度解决方案:
pc 和 tablet 设备,可以使用videojs作为视频播放器,移动端可以使用原生的和videojs,当在移动端使用videojs 的时候,需要针对ios设备隐藏掉 big-play-button.来避免上述带来的问题。