js插件---videojs的使用

js插件---videojs的使用

1、總結

一句話總結:

網上有各類細緻的現成的代碼能夠拿來用,不必本身死專

 

一、video.js有兩種初始化方式?

一種是在video的html標籤之中
一種是使用js來進行初始化

 

 

2、記錄一波video.js的使用及問題

轉自或參考:記錄一波video.js的使用及問題 - - SegmentFault 思否
https://segmentfault.com/a/1190000018914486?utm_source=tag-newestjavascript

 

一、視頻初始化

video.js有兩種初始化方式,一種是在video的html標籤之中,一種是使用js來進行初始化css

1.一、在video中進行初始化

<video id="my-player" class="video-js" controls preload="auto" poster="//vjs.zencdn.net/v/oceans.png" width="600" height="400" data-setup='{}'> <source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4"></source> <source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm"></source> <source src="//vjs.zencdn.net/v/oceans.ogv" type="video/ogg"></source> <p class="vjs-no-js"> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="https://videojs.com/html5-video-support/" target="_blank"> supports HTML5 video </a> </p> </video>

效果
html

 

 

1.二、使用js進行初始化

<!-- vjs-big-play-centered可以使大的播放按鈕居住,vjs-fluid可以使視頻佔滿容器 --> <video id="myVideo" class="video-js vjs-big-play-centered vjs-fluid"> <p class="vjs-no-js"> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="https://videojs.com/html5-video-support/" target="_blank"> supports HTML5 video </a> </p> </video> <script> var player = videojs(document.getElementById('myVideo'), { controls: true, // 是否顯示控制條 poster: 'xxx', // 視頻封面圖地址 preload: 'auto', autoplay: false, fluid: true, // 自適應寬高 language: 'zh-CN', // 設置語言 muted: false, // 是否靜音 inactivityTimeout: false, controlBar: { // 設置控制條組件 /* 設置控制條裏面組件的相關屬性及顯示與否 'currentTimeDisplay':true, 'timeDivider':true, 'durationDisplay':true, 'remainingTimeDisplay':false, volumePanel: { inline: false, } */ /* 使用children的形式能夠控制每個控件的位置,以及顯示與否 */ children: [ {name: 'playToggle'}, // 播放按鈕 {name: 'currentTimeDisplay'}, // 當前已播放時間 {name: 'progressControl'}, // 播放進度條 {name: 'durationDisplay'}, // 總時間 { // 倍數播放 name: 'playbackRateMenuButton', 'playbackRates': [0.5, 1, 1.5, 2, 2.5] }, { name: 'volumePanel', // 音量控制 inline: false, // 不使用水平方式 }, {name: 'FullscreenToggle'} // 全屏 ] }, sources:[ // 視頻源 { src: '//vjs.zencdn.net/v/oceans.mp4', type: 'video/mp4', poster: '//vjs.zencdn.net/v/oceans.png' } ] }, function (){ console.log('視頻能夠播放了',this); }); </script>

二、controlBar組件的說明

  • playToggle, //播放暫停按鈕
  • volumeMenuButton,//音量控制
  • currentTimeDisplay,//當前播放時間
  • timeDivider, // '/' 分隔符
  • durationDisplay, //總時間
  • progressControl, //點播流時,播放進度條,seek控制
  • liveDisplay, //直播流時,顯示LIVE
  • remainingTimeDisplay, //當前播放時間
  • playbackRateMenuButton, //播放速率,當前只有html5模式下才支持設置播放速率
  • fullscreenToggle //全屏控制
currentTimeDisplay, timeDivider, durationDisplay是相對於  remainingTimeDisplay的另外一套組件,後者只顯示當前播放時間,前者還顯示總時間。若要顯示成前者這種模式,即 '當前時間/總時間',能夠在初始化播放器選項中配置:
var myPlayer = neplayer('my-video', {controlBar:{ 'currentTimeDisplay':true, 'timeDivider':true, 'durationDisplay':true, 'remainingTimeDisplay':false }}, function() { console.log('播放器初始化完成'); });

 

 

 

三、video.js樣式修改

.video-js{ /* 給.video-js設置字體大小以統一各瀏覽器樣式表現,由於video.js採用的是em單位 */ font-size: 14px; } .video-js button{ outline: none; } .video-js.vjs-fluid, .video-js.vjs-16-9, .video-js.vjs-4-3{ /* 視頻佔滿容器高度 */ height: 100%; background-color: #161616; } .vjs-poster{ background-color: #161616; } .video-js .vjs-big-play-button{ /* 中間大的播放按鈕 */ font-size: 2.5em; line-height: 2.3em; height: 2.5em; width: 2.5em; -webkit-border-radius: 2.5em; -moz-border-radius: 2.5em; border-radius: 2.5em; background-color: rgba(115,133,159,.5); border-width: 0.12em; margin-top: -1.25em; margin-left: -1.75em; } .video-js.vjs-paused .vjs-big-play-button{ /* 視頻暫停時顯示播放按鈕 */ display: block; } .video-js.vjs-error .vjs-big-play-button{ /* 視頻加載出錯時隱藏播放按鈕 */ display: none; } .vjs-loading-spinner { /* 加載圓圈 */ font-size: 2.5em; width: 2em; height: 2em; border-radius: 1em; margin-top: -1em; margin-left: -1.5em; } .video-js .vjs-control-bar{ /* 控制條默認顯示 */ display: flex; } .video-js .vjs-time-control{display:block;} .video-js .vjs-remaining-time{display: none;} .vjs-button > .vjs-icon-placeholder:before{ /* 控制條全部圖標,圖標字體大小最好使用px單位,若是使用em,各瀏覽器表現可能會不大同樣 */ font-size: 22px; line-height: 1.9; } .video-js .vjs-playback-rate .vjs-playback-rate-value{ line-height: 2.4; font-size: 18px; } /* 進度條背景色 */ .video-js .vjs-play-progress{ color: #ffb845; background-color: #ffb845; } .video-js .vjs-progress-control .vjs-mouse-display{ background-color: #ffb845; } .vjs-mouse-display .vjs-time-tooltip{ padding-bottom: 6px; background-color: #ffb845; } .video-js .vjs-play-progress .vjs-time-tooltip{ display: none!important; }

四、動態切換視頻

<script> var data = { src: 'xxx.mp4', type: 'video/mp4' }; var player = videojs('myVideo', {...}); player.pause(); player.src(data); player.load(data); // 動態切換poster player.posterImage.setSrc('xxx.jpg'); player.play(); // 銷燬videojs //player.dispose(); </script>

五、設置語言

5.1傳統形式開發

對於使用<script>標籤形式的方式引入video.js,只須要在頁面中引入你須要的語言包便可vue

<script src="//example.com/path/to/lang/es.js"></script> <script src="//example.com/path/to/lang/zh-CN.js"></script> <script src="//example.com/path/to/lang/zh-TW.js"></script> <script> var player = videojs('myVideo', { language: 'zh-CN' // 初始化時設置語言,當即生效 }); /* 動態切換語言 使用這種方式進行動態切換不會當即生效,必須有所操做後纔會生效。如播放按鈕,必須點擊一次播放按鈕後播放按鈕的提示文字纔會改變 */ //player.language('zh-TW'); </script>

5.二、vue開發

import Video from 'video.js' /* 不能直接引入js,不然會報錯:videojs is not defined import 'video.js/dist/lang/zh-CN.js' */ import video_zhCN from 'video.js/dist/lang/zh-CN.json' import video_en from 'video.js/dist/lang/en.json' import 'video.js/dist/video-js.css' Video.addLanguage('zh-CN', video_zhCN); Video.addLanguage('en', video_en);

六、解決在iPhone中播放時自動全屏問題(2019.09.23)

在iPhone設備上播放視頻時(微信瀏覽器上也會有這個問題)會自動全屏,這裏的全屏並非常規的手機橫屏那種全屏,而是相似於一個modal彈窗的全屏,解決辦法就是在video標籤中添加playsinline="true"屬性html5

<video
    webkit-playsinline="true" playsinline="true" class="video-js vjs-big-play-centered vjs-fluid"> </video>
相關文章
相關標籤/搜索