摘要:是一個(gè)優(yōu)秀的視頻播放器庫(kù),不過(guò)官網(wǎng)的示例中,是作為全局變量引入的。如果我們的項(xiàng)目使用風(fēng)格的模塊,用來(lái)做打包的話,就需要做一些額外的工作。本文介紹我在使用的時(shí)候遇到的一些坑。這個(gè)是用來(lái)處理文件的。第二種方法是使用,直接把全局變量暴露出來(lái)。
video.js是一個(gè)優(yōu)秀的視頻播放器庫(kù),不過(guò)官網(wǎng)的示例中,是作為全局變量videojs引入的。如果我們的項(xiàng)目使用ES6風(fēng)格的模塊,用webpack來(lái)做打包的話,就需要做一些額外的工作。本文介紹我在使用的時(shí)候遇到的一些“坑”。
基本使用方法直接從npm安裝video.js,然后就可以在代碼中使用video.js了。
npm install video.js --save
import videojs from "video.js"; videojs(document.getElementById("foo"));引入默認(rèn)皮膚樣式
但是這樣使用并沒(méi)有引入video.js的皮膚樣式文件,播放器是沒(méi)有界面的。
所以還需要引入CSS文件:
import "video.js/dist/video-js.css";
另外需要注意的是,因?yàn)镃SS中使用了圖標(biāo)字體,還需要用webpack的file-loader處理字體文件。在webpack配置文件中添加這樣的loader配置:
{ test: /.(ttf|eot|svg|woff(2))(?[a-z0-9]+)?$/, loader: "file", }引入Flash播放器的SWF文件
對(duì)于一些HTML5播放器播放不了的格式,video.js回調(diào)用Flash播放器去播放器,這樣就需要引入一個(gè)SWF文件。方法還是用file-loader。在之前的配置中加上swf擴(kuò)展名:
{ test: /.(swf|ttf|eot|svg|woff(2))(?[a-z0-9]+)?$/, loader: "file", }
然后在代碼中配置SWF文件的路徑:
import SWF_PATH from "video.js/dist/video-js.swf"; videojs.options.flash.swf = SWF_PATH;引入vtt.js
如果使用Flash播放器,video.js還會(huì)異步請(qǐng)求一個(gè)vtt.js文件。這個(gè)是用來(lái)處理WebVTT文件的。
這個(gè)JS文件的路徑的配置方法跟上面的SWF文件的配置方法是類似的。但是,webpack默認(rèn)會(huì)對(duì)JS文件打包,而我們需要的是通過(guò)file-loader來(lái)引入這個(gè)JS文件,從而獲得其形對(duì)路徑,所以要在import語(yǔ)句中指定具體的loader:
import VTTJS_PATH from "file!videojs-vtt.js/dist/vtt.min.js"; videojs.options["vtt.js"] = VTTJS_PATH;引入其他語(yǔ)言翻譯
video.js包含了很多種語(yǔ)言的本地化,但是沒(méi)有包含在庫(kù)中,需要我們自己加載:
import "video.js/dist/lang/zh-CN";
這樣加載的問(wèn)題是,本地化JS代碼中使用了videojs這個(gè)全局變量,但是webpack并沒(méi)有將其暴露,所以運(yùn)行會(huì)報(bào)錯(cuò)。
解決這個(gè)問(wèn)題有兩種方法,在webpack的文檔有所提及。
第一種方法是使用imports-loader,在import一個(gè)JS的時(shí)候,注入一個(gè)全局變量:
import "imports?videojs=video.js!video.js/dist/lang/zh-CN"
這樣的語(yǔ)句,就是告訴webpack,將videojs這個(gè)全局變量指向video.js這個(gè)模塊。這樣就不會(huì)報(bào)錯(cuò)。
第二種方法是使用ProvidePlugin,直接把全局變量暴露出來(lái)。
在webpack的配置文件中,增加這樣的plugin配置:
new webpack.ProvidePlugin({ videojs: "video.js", }),
這樣就表示把video.js模塊暴露為全局變量videojs。
使用插件video.js有很多插件,他們一般也會(huì)使用videojs這個(gè)全局變量。因此如果直接引入也會(huì)報(bào)錯(cuò)。解決方法跟上一部分“引入其他語(yǔ)言翻譯”的方法一樣,在此不贅述。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/81044.html
摘要:目前半島局勢(shì)緊張,朝鮮已進(jìn)行了六次核試驗(yàn),被廣泛認(rèn)為已經(jīng)擁有了核彈頭。另外朝鮮的導(dǎo)彈技術(shù)今年以來(lái)快速突破,成功試射了射程可覆蓋美國(guó)本土的洲際彈道導(dǎo)彈。這個(gè)版的內(nèi)容傳到互聯(lián)網(wǎng)上后,迅速刷屏,引起紛紛議論。 SplderApi2 Node-SplderApi2 第二版 基于Node 的網(wǎng)絡(luò)爬蟲 API接口 包括前端開發(fā)日?qǐng)?bào)、kugou音樂(lè)、前端top框架排行、妹紙福利、搞笑視頻、段子笑話、...
摘要:最近的項(xiàng)目中需要播放視頻,鑒于元素的一些坑及不想自己造輪子,于是就找到了端播放視頻使用量最多的插件,是國(guó)外開發(fā)者開發(fā)的,英語(yǔ)本身就不好的我看英文文檔簡(jiǎn)直是折磨,國(guó)內(nèi)又沒(méi)有中文文檔,能搜的到的基本是簡(jiǎn)單的使用及最基本的的介紹,想要實(shí)現(xiàn)一些自定 最近的項(xiàng)目中需要播放視頻,鑒于html5元素的一些坑及不想自己造輪子,于是就找到了web端播放視頻使用量最多的插件video.js,video.j...
閱讀 1369·2021-10-13 09:39
閱讀 1333·2021-09-23 11:22
閱讀 2243·2019-08-30 14:05
閱讀 1059·2019-08-29 17:03
閱讀 771·2019-08-29 16:24
閱讀 2227·2019-08-29 13:51
閱讀 656·2019-08-29 13:00
閱讀 1290·2019-08-29 11:24