video.js的使用

跨浏览器地播放视频,在网上找了一下,找到了video.js,记录一下video.js的简单用法。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
< html >
< head >
...
<!-- 引入video.js的样式文件 -->
< link  rel = "stylesheet"  type = "text/css"  href = "css/video-js.css"  />
...
<!-- 如果没有使用Modernizr,则使用以下代码做shiv -->
< script  type = "text/javascript" >
     document.createElement('video');document.createElement('audio');document.createElement('track');
</ script >
...
<!-- 引入video.js的脚本文件 -->
< script  src = "js/video.js"  type = "text/javascript"  charset = "utf-8" ></ script >
<!-- 指定videojs的flash文件 -->
< script  type = "text/javascript" >
     videojs.options.flash.swf = "js/video-js.swf";
</ script >
...
</ head >
< body >
...
< video  id = "sample_video"  preload = "none"   class = "video-js vjs-default-skin vjs-big-play-centered"  data-setup = '{ "controls": true, "autoplay": false, "preload": "none", "poster": "images/sample_video_poster.png", "width": 852, "height": 480 }' >
                     < source  src = "videos/sample_video.mp4"  type = 'video/mp4'  />
                     
                     <!-- 如果浏览器不兼容HTML5则使用flash播放 -->
                     < object  id = "sample_video"  class = "vjs-flash-fallback"  width = "852"
                         height = "480"  type = "application/x-shockwave-flash"
                         data = "http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" >
                         < param  name = "movie"
                             value = "http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf"  />
                         < param  name = "allowfullscreen"  value = "true"  />
                         < param  name = "flashvars"  value = 'config={"playlist":["images/sample_video_poster.png", {"url": "videos/sample_video.mp4","autoPlay":false,"autoBuffering":true}]}'  />
                         <!-- 视频图片. -->
                         < img  src = "images/sample_video.png"  width = "852"
                             height = "480"  alt = "Poster Image"
                             title = "No video playback capabilities."  />
                     </ object >
                 </ video >
...
< script  type = "text/javascript" >
var myPlayer = null;
$(document).ready(function() {
...
     if(!myPlayer) {
         // Using the video's ID or element
         myPlayer = videojs("video_center_video");
     }
     // After you have references to your players you can...(example)
     myPlayer.play(); // Starts playing the video for this player.
...
});
</ script >
</ body >
</ html >

 

上面的用法是tag标签的使用办法,官方文档里还写了使用js初始化的办法,很简单,可参照https://github.com/videojs/video.js/blob/stable/docs/guides/setup.md

使用video.js有一个好处就是video标签或flashvars中可以指定多个视频源,它会根据浏览器自动寻找合适的视频进行播放。

不过今天使用video.js的时候发现一个问题,当设置了preload为auto之后,在chrome下首次刷新网页网络请求会出现一个错误。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
Request URL:
http://xxxxx/yyyy.mp4
Request Headers CAUTION: Provisional headers are shown.
Accept-Encoding:
identity; q=1, *;q= 0
Cache-Control:
max-age=0
Range:
bytes=0-
Referer:
http://xxxxx
User-Agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36

 

暂时将preload设置为none规避此问题。

默认的video.js的样式不太好看,顺便附上从锤子网http://www.smartisan.com/爬下来的样式文件。

?
1
2
3
4
5
/*!
Video.js Default Styles (http://videojs.com)
Version 4.6.1
Create your own skin at http://designer.videojs.com
*/ .vjs-default-skin{ color : #ccc }@font-face{ font-weight : 400 ; font-style : normal }.vjs-default-skin .vjs-slider{ outline : 0 ; position : relative ; cursor : pointer ; padding : 0 ; background : url (../images/bg_player_icon_v.png)  0  -210px  repeat-x }.vjs-default-skin .vjs-slider:focus{-webkit-box-shadow: 0  0  2em  #fff ;-moz-box-shadow: 0  0  2em  #fff ;box-shadow: 0  0  2em  #fff }.vjs-default-skin .vjs-slider-handle{ font-family :VideoJS; font-size : 1em ; line-height : 1 ; text-align : center ; text-shadow : 0  0  1em  #fff ; position : absolute ; top : -13px ; left : 0 ; background : url (../images/bg_player_icon_v.png)  0  -90px  no-repeat ; width : 33px ; height : 33px }.vjs-default-skin .vjs-control-bar{ display : none ; position : absolute ; bottom : 0 ; left : 0 ; right : 0 ; height : 39px ; padding : 3px  0  0 ; background-color : #000 }.vjs-default-skin.vjs-has-started .vjs-control-bar{ display : block ; visibility : visible ;opacity: 1 ;-webkit-transition:visibility . 1 s,opacity . 1 s;-moz-transition:visibility . 1 s,opacity . 1 s;-o-transition:visibility . 1 s,opacity . 1 s;transition:visibility . 1 s,opacity . 1 s}.vjs-default-skin.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{ display : block ; visibility : hidden ;opacity: 0 ;-webkit-transition:visibility  1 s,opacity  1 s;-moz-transition:visibility  1 s,opacity  1 s;-o-transition:visibility  1 s,opacity  1 s;transition:visibility  1 s,opacity  1 s}.vjs-default-skin.vjs-controls-disabled .vjs-control-bar{ display : none }.vjs-default-skin.vjs-using-native-controls .vjs-control-bar{ display : none }.vjs-default-skin.vjs-error .vjs-control-bar{ display : none }@media \ 0 screen{.vjs-default-skin.vjs-user-inactive.vjs-playing .vjs-control-bar :before{ content : "" }}.vjs-default-skin .vjs-control{ outline : 0 ; position : relative ; float : left ; text-align : center ; margin : 0 ; padding : 0 ; height : 3em ; width : 4em }.vjs-default-skin .vjs-control:before{ font-family :VideoJS; font-size : 1.5em ; position : absolute ; top : 0 ; left : 0 ; width : 100% ; height : 100% ; text-align : center ; text-shadow : 1px  1px  1px  rgba( 0 , 0 , 0 ,. 5 )}.vjs-default-skin .vjs-control:focus:before,.vjs-default-skin .vjs-control:hover:before{ text-shadow : 0  0  1em  #fff }.vjs-default-skin .vjs-control-text{ border : 0 ; clip :rect( 0  0  0  0 ); height : 1px ; margin : -1px ; overflow : hidden ; padding : 0 ; position : absolute ; width : 1px }.vjs-default-skin .vjs-play-control{ width : 5em ; cursor : pointer ; background : url (../images/bg_player_icon.png)  27px  0  no-repeat }.vjs-default-skin.vjs-playing .vjs-play-control{ background : url (../images/bg_player_icon.png)  -33px  0  no-repeat }.vjs-default-skin .vjs-playback-rate .vjs-playback-rate-value{ font-size : 1.5em ; line-height : 2 ; position : absolute ; top : 0 ; left : 0 ; width : 100% ; height : 100% ; text-align : center ; text-shadow : 1px  1px  1px  rgba( 0 , 0 , 0 ,. 5 )}.vjs-default-skin .vjs-playback-rate.vjs-menu-button .vjs-menu .vjs-menu-content{ width : 4em ; left : -2em ; list-style : none }.vjs-default-skin .vjs-mute-control,.vjs-default-skin .vjs-volume-menu-button{ cursor : pointer ; float : right ; background : url (../images/bg_player_icon.png)  -104px  0  no-repeat }.vjs-default-skin .vjs-mute-control.vjs-vol -0 ,.vjs-default-skin .vjs-volume-menu-button.vjs-vol -0 { background : url (../images/bg_player_icon.png)  -164px  0  no-repeat }.vjs-default-skin .vjs-mute-control.vjs-vol -1: before,.vjs-default-skin .vjs-volume-menu-button.vjs-vol -1: before{ background : url (../images/bg_player_icon.png)  -104px  0  no-repeat }.vjs-default-skin .vjs-mute-control.vjs-vol -2: before,.vjs-default-skin .vjs-volume-menu-button.vjs-vol -2: before{ background : url (../images/bg_player_icon.png)  -104px  0  no-repeat }.vjs-default-skin .vjs-volume-control{ width : 5em ; float : right ; top : 2px ; top : 4px \ 0 }.vjs-default-skin .vjs-volume-bar{ width : 5em ; height :. 6em ; margin : 1.1em  auto  0 }.vjs-default-skin .vjs-volume-menu-button .vjs-menu-content{ height : 2.9em }.vjs-default-skin .vjs-volume- level { position : absolute ; top : 0 ; left : 0 ; height :. 5em ; width : 100% ; background : url (../images/bg_player_icon_v.png)  0  -150px  repeat-x }.vjs-default-skin .vjs-volume-bar .vjs-volume-handle{ width : 14px ; height : 14px ; left : 4.5em ; background : url (../images/bg_player_icon_v.png)  0  0  no-repeat ; top : -4px }.vjs-default-skin .vjs-volume-handle:before{ font-size :. 9em ; top :-. 2em ; left :-. 2em ; width : 1em ; height : 1em }.vjs-default-skin .vjs-volume-menu-button .vjs-menu .vjs-menu-content{ width : 6em ; left : -4em }.vjs-default-skin .vjs-progress-control{ position : absolute ; left : 0 ; right : 0 ; width : auto ; font-size :. 3em ; height : 6px ; top : -6px ;-webkit-transition: all  . 4 s;-moz-transition: all  . 4 s;-o-transition: all  . 4 s;transition: all  . 4 s}.vjs-default-skin:hover .vjs-progress-control{ font-size :. 9em ;-webkit-transition: all  . 2 s;-moz-transition: all  . 2 s;-o-transition: all  . 2 s;transition: all  . 2 s}.vjs-default-skin .vjs-progress-holder{ height : 100% }.vjs-default-skin .vjs-progress-holder .vjs-play-progress,.vjs-default-skin .vjs-progress-holder .vjs-load-progress{ position : absolute ; display : block ; height : 100% ; margin : 0 ; padding : 0 ; width : 0 ; left : 0 ; top : 0 }.vjs-default-skin .vjs-play-progress{ background : url (../images/bg_player_icon_v.png)  0  -150px  repeat-x }.vjs-default-skin .vjs-load-progress{ background : url (../images/bg_player_icon_v.png)  0  -180px  repeat-x }.vjs-default-skin.vjs-live .vjs-time-controls,.vjs-default-skin.vjs-live .vjs-time-divider,.vjs-default-skin.vjs-live .vjs-progress-control{ display : none }.vjs-default-skin.vjs-live .vjs-live-display{ display : block }.vjs-default-skin .vjs-live-display{ display : none ; font-size : 1em ; line-height : 3em }.vjs-default-skin .vjs-time-controls{ font-size : 1em ; line-height : 36px }.vjs-default-skin .vjs-current-time{ float : left }.vjs-default-skin .vjs-duration{ float : left }.vjs-default-skin .vjs-remaining-time{ display : none ; float : left }.vjs-default-skin .vjs-time-controls,.vjs-default-skin .vjs-duration,.vjs-default-skin .vjs-duration{ top : 3px \ 0 ; top : 1px }.vjs-time-divider{ float : left ; line-height : 36px }.vjs-default-skin .vjs-fullscreen-control{ width : 3.8em ; cursor : pointer ; float : right }.vjs-default-skin .vjs-fullscreen-control{ background : url (../images/bg_player_icon.png)  -220px  0  no-repeat }.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control{ background : url (../images/bg_player_icon.png)  -284px  0  no-repeat }.vjs-default-skin .vjs-big-play-button{ left : 50% ; top : 50% ; margin : -26.5px  0  0  -22.5px ; display : block ; z-index : 2 ; position : absolute ; width : 45px ; height : 53px ; cursor : pointer ;opacity: 1 ; background : url (../images/bg_player_play.png)  left  top  no-repeat }.vjs-default-skin .vjs-mute-control.vjs-vol -0: hover,.vjs-default-skin .vjs-mute-control.vjs-vol -1: hover,.vjs-default-skin .vjs-mute-control.vjs-vol -2: hover,.vjs-default-skin .vjs-mute-control.vjs-vol -3: hover,.vjs-default-skin .vjs-mute-control:hover,.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control:hover,.vjs-default-skin .vjs-fullscreen-control:hover,.vjs-default-skin.vjs-playing .vjs-play-control:hover,.vjs-default-skin .vjs-play-control:hover,.vjs-default-skin .vjs-big-play-button:hover{opacity:. 6 ;-moz-transition:opacity . 3 s ease;-webkit-transition:opacity . 3 s ease;-o-transition:opacity . 3 s ease;transition:opacity . 3 s ease}.vjs-default-skin.vjs-big-play-centered .vjs-big-play-button{ left : 50% ; margin-left : -2.1em ; top : 50% ; margin-top : -1.4000000000000001em }.vjs-default-skin.vjs-controls-disabled .vjs-big-play-button{ display : none }.vjs-default-skin.vjs-has-started .vjs-big-play-button{ display : none }.vjs-default-skin.vjs-using-native-controls .vjs-big-play-button{ display : none }.vjs-default-skin:hover .vjs-big-play-button,.vjs-default-skin .vjs-big-play-button:focus{ outline : 0 ; border-color : #fff }.vjs-error .vjs-big-play-button{ display : none }.vjs-error-display{ display : none }.vjs-error .vjs-error-display{ display : block ; position : absolute ; left : 0 ; top : 0 ; width : 100% ; height : 100% }.vjs-error .vjs-error- display :before{ content : 'X' ; font-family : Arial ; font-size : 4em ; color : #666 ; line-height : 1 ; text-shadow :. 05em  . 05em  . 1em  #000 ; text-align : center ; vertical-align : middle ; position : absolute ; top : 50% ; margin-top :-. 5em ; width : 100% }.vjs-error-display div{ position : absolute ; font-size : 1.4em ; text-align : center ; bottom : 1em ; right : 1em ; left : 1em }.vjs-error-display a,.vjs-error-display a:visited{ color : #F4A460 }.vjs-loading-spinner{ background : url (../images/bg_player_loading.png)  no-repeat ; display : none ; position : absolute ; top : 50% ; left : 50% ; font-size : 4em ; line-height : 1 ; width : 61px ; height : 61px ; margin-left : -30.5px ; margin-top : -30.5px ;opacity:. 75 ;-webkit-animation:spin  1.5 s infinite linear;-moz-animation:spin  1.5 s infinite linear;-o-animation:spin  1.5 s infinite linear;animation:spin  1.5 s infinite linear}.video-js.vjs-error .vjs-loading-spinner{ display : none !important ;-webkit-animation: none ;-moz-animation: none ;-o-animation: none ;animation: none }@-moz-keyframes spin{ 0% {-moz-transform:rotate( 0 deg)} 100% {-moz-transform:rotate( 359 deg)}}@-webkit-keyframes spin{ 0% {-webkit-transform:rotate( 0 deg)} 100% {-webkit-transform:rotate( 359 deg)}}@-o-keyframes spin{ 0% {-o-transform:rotate( 0 deg)} 100% {-o-transform:rotate( 359 deg)}}@keyframes spin{ 0% {transform:rotate( 0 deg)} 100% {transform:rotate( 359 deg)}}.vjs-default-skin .vjs-menu-button{ float : right ; cursor : pointer }.vjs-default-skin .vjs-menu{ display : none ; position : absolute ; bottom : 0 ; left : 0 ; width : 0 ; height : 0 ; margin-bottom : 3em ; border-left : 2em  solid  transparent ; border-right : 2em  solid  transparent ; border-top : 1.55em  solid  #000 ; border-top-color :rgba( 7 , 40 , 50 ,. 5 )}.vjs-default-skin .vjs-menu-button .vjs-menu .vjs-menu-content{ display : block ; padding : 0 ; margin : 0 ; position : absolute ; width : 10em ; bottom : 1.5em ; max-height : 15em ; overflow : auto ; left : -5em ; background-color : #07141e ; background-color :rgba( 7 , 20 , 30 ,. 7 );-webkit-box-shadow:-. 2em  -. 2em  . 3em  rgba( 255 , 255 , 255 ,. 2 );-moz-box-shadow:-. 2em  -. 2em  . 3em  rgba( 255 , 255 , 255 ,. 2 );box-shadow:-. 2em  -. 2em  . 3em  rgba( 255 , 255 , 255 ,. 2 )}.vjs-default-skin .vjs-menu-button:hover .vjs-menu{ display : block }.vjs-default-skin .vjs-menu-button ul li{ list-style : none ; margin : 0 ; padding :. 3em  0 ; line-height : 1.4em ; font-size : 1.2em ; text-align : center ; text-transform : lowercase }.vjs-default-skin .vjs-menu-button ul li.vjs-selected{ background-color : #000 }.vjs-default-skin .vjs-menu-button ul li:focus,.vjs-default-skin .vjs-menu-button ul li:hover,.vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,.vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover{ outline : 0 ; color : #111 ; background-color : #fff ; background-color :rgba( 255 , 255 , 255 ,. 75 );-webkit-box-shadow: 0  0  1em  #fff ;-moz-box-shadow: 0  0  1em  #fff ;box-shadow: 0  0  1em  #fff }.vjs-default-skin .vjs-menu-button ul li.vjs-menu-title{ text-align : center ; text-transform : uppercase ; font-size : 1em ; line-height : 2em ; padding : 0 ; margin : 0  0  . 3em ; font-weight : 700 ; cursor : default }.vjs-default-skin .vjs-subtitles-button:before{ content : "\e00c" }.vjs-default-skin .vjs-captions-button:before{ content : "\e008" }.vjs-default-skin .vjs-captions-button:focus .vjs-control- content :before,.vjs-default-skin .vjs-captions-button:hover .vjs-control- content :before{-webkit-box-shadow: 0  0  1em  #fff ;-moz-box-shadow: 0  0  1em  #fff ;box-shadow: 0  0  1em  #fff }.video-js{ background-color : #000 ; position : relative ; padding : 0 ; font-size : 10px ; vertical-align : middle ; font-weight : 400 ; font-style : normal ; font-family : Arial , sans-serif ;-webkit-user-select: none ;-moz-user-select: none ;-ms-user-select: none ;user-select: none }.video-js .vjs-tech{ position : absolute ; top : 0 ; left : 0 ; width : 100% ; height : 100% }.video-js:-moz-full- screen { position : absolute }body.vjs-full-window{ padding : 0 ; margin : 0 ; height : 100% ;overflow-y: auto }.video-js.vjs-fullscreen{ position : fixed ; overflow : hidden ; z-index : 1000 ; left : 0 ; top : 0 ; bottom : 0 ; right : 0 ; width : 100% !important ; height : 100% !important ; _position : absolute }.video-js:-webkit-full- screen { width : 100% !important ; height : 100% !important }.video-js.vjs-fullscreen.vjs-user-inactive{ cursor : none }.vjs-poster{ background-repeat : no-repeat ; background-position : 50%  50% ;background- size :contain; cursor : pointer ; height : 100% ; margin : 0 ; padding : 0 ; position : relative ; width : 100% }.vjs-poster img{ display : block ; margin : 0  auto ; max-height : 100% ; padding : 0 ; width : 100% }.video-js.vjs-using-native-controls .vjs-poster{ display : none }.video-js .vjs-text-track-display{ text-align : center ; position : absolute ; bottom : 4em ; left : 1em ; right : 1em }.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{ bottom : 1em }.video-js .vjs-text-track{ display : none ; font-size : 1.4em ; text-align : center ; margin-bottom :. 1em ; background-color : #000 ; background-color :rgba( 0 , 0 , 0 ,. 5 )}.video-js .vjs-subtitles{ color : #fff }.video-js .vjs-captions{ color : #fc6 }.vjs-tt-cue{ display : block }.vjs-default-skin .vjs- hidden { display : none }.vjs-lock-showing{ display : block !important ;opacity: 1 ; visibility : visible }.vjs-no-js{ padding : 20px ; color : #ccc ; background-color : #333 ; font-size : 18px ; font-family : Arial , sans-serif ; text-align : center ; width : 300px ; height : 150px ; margin : 0  auto }.vjs-no-js a,.vjs-no-js a:visited{ color : #F4A460 }

样式中引用了几张图片,从锤子网上下载就可以了

你可能感兴趣的:(video)