vue-video-player

javascriptvideo.jswebpack

video.js是一个优秀的视频播放器库,不过官网的示例中,是作为全局变量videojs引入的。如果我们的项目使用ES6风格的模块,用webpack来做打包的话,就需要做一些额外的工作。本文介绍我在使用的时候遇到的一些“坑”。

基本使用方法

直接从npm安装video.js,然后就可以在代码中使用video.js了。

npm install video.js --save
import videojs from 'video.js';

videojs(document.getElementById('foo'));

引入默认皮肤样式

但是这样使用并没有引入video.js的皮肤样式文件,播放器是没有界面的。

所以还需要引入CSS文件:

import 'video.js/dist/video-js.css';

另外需要注意的是,因为CSS中使用了图标字体,还需要用webpack的file-loader处理字体文件。在webpack配置文件中添加这样的loader配置:

{
  test: /\.(ttf|eot|svg|woff(2))(\?[a-z0-9]+)?$/,
  loader: 'file',
}

引入Flash播放器的SWF文件

对于一些HTML5播放器播放不了的格式,video.js回调用Flash播放器去播放器,这样就需要引入一个SWF文件。方法还是用file-loader。在之前的配置中加上swf扩展名:

{
  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还会异步请求一个vtt.js文件。这个是用来处理WebVTT文件的。

这个JS文件的路径的配置方法跟上面的SWF文件的配置方法是类似的。但是,webpack默认会对JS文件打包,而我们需要的是通过file-loader来引入这个JS文件,从而获得其形对路径,所以要在import语句中指定具体的loader:

import VTTJS_PATH from 'file!videojs-vtt.js/dist/vtt.min.js';

videojs.options['vtt.js'] = VTTJS_PATH;

引入其他语言翻译

video.js包含了很多种语言的本地化,但是没有包含在库中,需要我们自己加载:

import 'video.js/dist/lang/zh-CN';

这样加载的问题是,本地化JS代码中使用了videojs这个全局变量,但是webpack并没有将其暴露,所以运行会报错。

解决这个问题有两种方法,在webpack的文档有所提及

第一种方法是使用imports-loader,在import一个JS的时候,注入一个全局变量:

import 'imports?videojs=video.js!video.js/dist/lang/zh-CN'

这样的语句,就是告诉webpack,将videojs这个全局变量指向video.js这个模块。这样就不会报错。

第二种方法是使用ProvidePlugin,直接把全局变量暴露出来。

在webpack的配置文件中,增加这样的plugin配置:

new webpack.ProvidePlugin({
  videojs: 'video.js',
}),

这样就表示把video.js模块暴露为全局变量videojs

使用插件

video.js有很多插件,他们一般也会使用videojs这个全局变量。因此如果直接引入也会报错。解决方法跟上一部分“引入其他语言翻译”的方法一样,在此不赘述。

 

如果还是没解决不显示中文,就看看这个了。简单粗暴

在main.js中,书写以下代码,尤其是要正确找到 zh-CN.js 的路径,通过yarn/npm 安装的vue-video-player的 zh-CN.js路径在node_modules/video.js/dist/lang/zh-CN.js

然后注意window.videojs = VideoPlayer.videojs写在引入player的后边;

import VideoPlayer from 'vue-video-player'
window.videojs = VideoPlayer.videojs            //划重点

require('vue-video-player/src/custom-theme.css')
require('video.js/dist/video-js.min.css')
require('video.js/dist/lang/zh-CN.js')
Vue.use(VideoPlayer)

同是在视频中加入语言设置
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值