一款開源免費跨瀏覽器的視頻播放器--videojs使用介紹

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   color   os   使用   

       最近項目中的視頻功能,需要做到瀏覽器全相容,所以之前用html5實現的視頻功能就需要進行改造了。在網上翻了個遍,試來試去,在所有的視頻播放器中,就數它最實際了。首先我們來看看它的優點:

     1.它是開源免費的,你可以在github很容易的擷取它的最新代碼。

     2.使用它非常的容易,只要花幾秒鐘就可以架起一個視頻播放頁面。

     3.它幾乎相容所有的瀏覽器,並且優先使用html5,在不支援的瀏覽器中,會自動使用flash進行播放。

     4. 介面可以定製,純javascript和css打造。說明文檔也非常的詳細。

下面是官網提供的一個簡單的使用方法:

<!DOCTYPE HTML><html><head>  <title>Video.js Test Suite</title><link href="//vjs.zencdn.net/4.10/video-js.css" rel="stylesheet"><script src="//vjs.zencdn.net/4.10/video.js"></script> </head><body> <video id="example_video_1" class="video-js vjs-default-skin" controls width="640" height="264">
 <source src="http://video-js.zencoder.com/oceans-clip.mp4" type=‘video/mp4‘ />
</video> 
</body>
</html>

 這樣個例子對於想用它做一個電影網站來說夠用了。可是我們的需求往往不會只是這麼簡單。比如我現在要強制在pc端使用flash播放要怎麼設定?

有兩種途徑:

   先說第一種,通過html的data-setup 屬性進行設定。

 

<video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered"  controls preload="auto" width="640" height="264"  poster="http://video-js.zencoder.com/oceans-clip.png"  data-setup=‘{ techOrder: ["flash","html5"]}‘>  ...</video>

第二種就是使用javascript:

  

  videojs(‘#example_video_1‘,{    techOrder: ["flash","html5"]  },function() {    })

當然,官方的文檔說,在內部會自動檢測是否支援html5,在不支援的情況下會自動使用flash播放。 

隨著單頁應用的流行,很多時候,我們在初始化videojs的時候,頁面上是不存在存放video的節點的。這個時候,videojs也替我們想到了,我們只需要置空data-setup的屬性就可以了。然後在js中進行如下申明:

  

videojs(document.getElementById(‘example_video_1‘), {}, function() {  // This is functionally the same as the previous example.});

也就是說,第一個位置,我們直接傳dom節點的引用也是可以的。

這時候我們發現,播放按鈕預設是在左上方,官方說這樣可以不會遮擋內容的精彩部分,但是如果我們想要放到中間,處理也很簡單。在video標籤中增加一個vjs-big-play-centered樣式就好了

<video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered"  controls preload="auto" width="640" height="264"  poster="http://video-js.zencoder.com/oceans-clip.png"  data-setup=‘{"example_option":true}‘>  ...</video>

如果我們想要它自動播放,非常容易,加一個autoplay 就可以了,或者data-setup=‘{"autoplay":true}‘ ,通過js也是一樣的道理。非常簡單就不示範了。官方說了,由於html5的標準,不建議寫成autoplay="true" 或 controls="true",那是html5之前的版本用的。初始化的時候,常用的有如下一些參數:

https://github.com/videojs/video.js/blob/stable/docs/guides/options.md

autoplay

自動播放

<video autoplay ...>or{ "autoplay": true }
preload

預先載入資源

<video preload ...>or{ "preload": "auto" }
poster

影片縮圖

<video poster="myPoster.jpg" ...>or{ "poster": "myPoster.jpg" }
loop

自動迴圈

<video loop ...>or{ "loop": "true" }
width

The width attribute sets the display width of the video.

<video width="640" ...>or{ "width": 640 }
height

The height attribute sets the display height of the video.

<video height="480" ...>or{ "height": 480 }
Component Options

功能組件(例中示範如何移除靜音按鍵)

You can set the options for any single player component. For instance, if you wanted to remove the muteToggle button, which is a child of controlBar, you can just set that component to false:

var player = videojs(‘video-id‘, {  children: {    controlBar: {      children: {        muteToggle: false      }    }  }});

上面的代碼等價於:

var player = videojs(‘video-id‘, {  controlBar: {    muteToggle: false  }});

 videojs 有許多的組件,比如聲音,播放按鈕,字幕,時間,進度條等等,它們在html中的結構類似於這樣子:

Player    PosterImage    TextTrackDisplay    LoadingSpinner    BigPlayButton    ControlBar        PlayToggle        FullscreenToggle        CurrentTimeDisplay        TimeDivider        DurationDisplay        RemainingTimeDisplay        ProgressControl            SeekBar              LoadProgressBar              PlayProgressBar              SeekHandle        VolumeControl            VolumeBar                VolumeLevel                VolumeHandle        MuteToggle

這方便我們自己改寫樣式和js進行控制。當然,大多數情況我們不需要自己輪子,官方預設的皮膚已經做的非常漂亮了.

通常html5會比flash載入的更快,所以我們通常優先使用html5,同時把我們要進行的操作寫在回調裡邊。比如:

videojs("example_video_1").ready(function(){  var myPlayer = this;  // EXAMPLE: Start playing the video.  myPlayer.play();});

需要強調的是,如果使用flash優先,那麼你在本地調式的時候,要用http的方式訪問,否則你什麼也看不到。

更多的api調用請看這裡https://github.com/videojs/video.js/blob/stable/docs/api/vjs.Player.md

METHODSautoplaybufferedbufferedEndbufferedPercentcancelFullScreen deprecatedcontrolscurrentSrccurrentTimecurrentTypedisposedurationendederrorexitFullscreeninitisFullScreen deprecatedisFullscreenlanguageloadloopmutedpausepausedplayplaybackRateposterpreloadremainingTimerequestFullScreen deprecatedrequestFullscreenseekingsrcvolumeaddChild inheritedaddClass inheritedbuildCSSClass inheritedchildren inheritedcontentEl inheritedcreateEl inheriteddimensions inheritedel inheritedenableTouchActivity inheritedgetChild inheritedgetChildById inheritedhasClass inheritedheight inheritedhide inheritedid inheritedinitChildren inheritedname inheritedoff inheritedon inheritedone inheritedoptions inheritedplayer inheritedready inheritedremoveChild inheritedremoveClass inheritedshow inheritedtrigger inheritedtriggerReady inheritedwidth inherited

這裡我說一下幾個常用的方法:清理 dispose,hide() 隱藏,show() 顯示,play()播放,pause()暫停 幾本上就差不多了。

最後要說一下的就是事件。官方提示的事件如下:

EVENTSdurationchangeendedfirstplayfullscreenchangeloadedalldataloadeddataloadedmetadataloadstartpauseplayprogressseekedseekingtimeupdatevolumechangewaitingresize inherited

我們常用的有play,pause,ended,這些可以協助我們在必要的時候進行處理。不過呢,在實踐中,我發現flash模式和html5模式還是有一些不一致的地方。

比哪在flash模式中,在播放器暫停或隱藏之後,調用paused()方法報錯:VIDEOJS: Video.js: paused unavailable on Flash playback technology element.

調用hide()之後,調用show()方法,在flash模式中,會自動調用播放,而且是重新開始,而html5模式則不會。對於這一點,解決的辦法是在option中指定autoplay:false,這樣兩者行為就一致了。

 

一款開源免費跨瀏覽器的視頻播放器--videojs使用介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.