videojs 視頻播放器從入門到精通


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 代碼也能避免視頻黑框的問題

  • 實現視頻播放按鈕,暫停播放按鈕和重播按鈕點顯示
  1. 居中顯示視頻播放器:給video標簽添加類名:video-js vjs-big-play-centered

  2. 關於視

  • 視頻播放按鈕的樣式的調整
.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.來避免上述帶來的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM