video.js添加⾃定义组件的⽅法
⽬录
获取videojs源码
源码的编译
添加TitleBar组件
js代码编写
在player⾥注册⾃定义组件
添加css样式
应⽤⾃⼰的组件
重新编译
在html中调⽤组件
实际效果
结语
videojs虽然已经为我们提供了较为完善的功能.但是在实际应⽤中,我们仍然可能需要为这个播放器添加部分功能.下⾯将以添加标题栏为⽰例简要介绍如何给videojs添加功能或组件.
获取videojs源码
源码的编译
使⽤cmd,在源代码根⽬录下使⽤npm run build命令对源码进⾏打包.
具体的打包编译⽅法可以
没有错误正常编译后可以得到dist⽂件夹,⾥⾯有编译后的⽂件.
添加TitleBar组件
js代码编写
开发TitleBar源码
// Subclasses Component
import Component from './component.js';
import console from 'global/console';
import videojs from './video.js';
// d⽅法⽤来实现继承,videojs中⼤部分组件直接或间接的继承⾃Component
/**
* the title bar
* @extends Component
*/
class TitleBar extends Component {
// The constructor of a component receives two arguments: the
// player it will be associated with and an object of options.
// 这个构造函数接收两个参数:
/
/ player将被⽤来关联options中的参数
/**
* constructor
* @param {Player} player the player
* @param {any} options the options
*/
constructor(player, options) {
//调⽤⽗类的构造⽅法
super(player, options);
// 如果在options中传了text属性,那么更新这个组件的⽂字显⽰
if () {
this.);
}
}
// The `createEl` function of a component creates its DOM element.
// 创建⼀个DOM元素
/**
* creatEl
* @returns {*} zzf add
*/
createEl() {
ateEl('div', {
/
/ Prefixing classes of elements within a player with "vjs-"
// is a convention used in Video.js.
// 给元素加vjs-开头的样式名
className: 'vjs-title-bar'
});
}
/**
* 设置标题
* @param {String} text the title
*/
updateTextContent(text) {
/
/ 如果options中没有提供text属性,默认显⽰为空
if (typeof text !== 'string') {
text = ' ';
}
// Use Video.js utility DOM methods to manipulate the content
// of the component's element.
// 使⽤Video.js提供的DOM⽅法来操作组件元素
ptyEl(this.el());
videojs.dom.appendContent(this.el(), text);
}
/**
* build css class
* @returns {string} the class
*/
buildCSSClass() {
return 'vjs-title-bar';
}
/**
* when the languagechange
*/
handleLanguagechange() {
}
}
lText_ = 'title-bar';
// Register the component with Component, so it can be used in players.
// 在component中注册这个组件,才可以使⽤
export default TitleBar;
需要注意的是,TitleBar应继承Component,并且在构造⽅法中应先调⽤⽗类的构造⽅法.
同时,需要调⽤isterComponent()⽅法注册组件.
在player⾥注册⾃定义组件
打开player.js⽂件,在图中的地⽅import⾃⼰的组件即可.videojs初始化时会⾃动进⾏注册
添加css样式
在title-bar.js⽂件中,buildCSSClass⽅法中声明了titleBar的css样式为vjs-title-bar,故在css样式中末尾添加如下css代码
/** title bar默认样式 */
.video-js .vjs-title-bar {
color: white;
font-size: 2em;
padding: .5em;
position: absolute;
top: 0;
left:10%;
min-width: 80px;
height: 40px;
line-height: 40px;
}
.vjs-has-started .vjs-title-bar {
display: flex;
visibility: visible;
opacity: 1;
transition: visibility 0.1s, opacity 0.1s;
}
/* ⽤户不活动时设计title bar⾃动隐藏 */
.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-title-bar {
visibility: visible;
/*visibility: hidden;*/
opacity: 0;
transition: visibility 1s, opacity 1s;
}
.vjs-controls-disabled .vjs-title-bar,
.vjs-using-native-controls .vjs-title-bar,
.vjs-error .vjs-title-bar {
display: none !important;
}
.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-title-bar {
opacity: 0;
visibility: visible;
/*visibility: hidden;*/
}
.
vjs-has-started.vjs-no-flex .vjs-title-bar {
display: table;
}
应⽤⾃⼰的组件
重新编译
与之前编译⽅式⼀样,在源代码⽬录下使⽤npm run build命令进⾏编译
在html中调⽤组件
编写⼀个简单的html⽹页进⾏测试
<!DOCTYPE html>
<html lang="en">
<head>
<title>Video.js | HTML5 Video Player</title>
<!--引⽤本地样式⽂件 -->
<link href="C:\Users\KKFORKK\Desktop\example\docs\copycss.css" rel="external nofollow" rel="stylesheet"> <!--引⽤编译后的js⽂件-->
<script src="C:\Users\KKFORKK\Desktop\example\dist\video.min.js"></script>
</head>
<body>
<video id="example_video_1" class="video-js" controls preload="none" width="1024" height="768"
poster="D:/pixiv/1605679254116.jpg" >
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web
browser that <a href="videojs/html5-video-support/" rel="external nofollow" target="_blank">
supports HTML5 video</a></p>
</video>
<script>
//获取video元素并进⾏配置
var player = videojs('example_video_1', {
inactivityTimeout: 2000,
//启⽤titleBar组件,并设置text
TitleBar: {
'text':'000'
},
sourcesOrder:true,
controls: true, // 是否显⽰控制条
preload: 'auto',
autoplay: false,
language: 'zh-CN', // 设置语⾔
muted: false, // 是否静⾳
controlBar: { // 设置控制条组件
/* 使⽤children的形式可以控制每⼀个控件的位置,以及显⽰与否 */
children: [
{name: 'playToggle'}, // 播放按钮
{name: 'currentTimeDisplay'}, // 当前已播放时间
{name: 'progressControl'}, // 播放进度条
{name: 'durationDisplay'}, // 总时间
{name: 'audioTrackButton'},
js arguments{ // 倍数播放
name: 'playbackRateMenuButton',
'playbackRates': [0.5, 1, 1.5, 2, 2.5]
},
{
name: 'volumePanel', // ⾳量控制
inline: false, // 不使⽤⽔平⽅式
},
{name: 'FullscreenToggle'} // 全屏
]
},
sources:[ // 视频源,这⾥选择的是⾳频
{
//资源
src: 'D:/Music/Aimer - DAWN.mp3',
type: 'audio/mp3', //资源类型
poster: 'D:/pixiv/1605679254116.jpg',
}
]
}, function (){
console.log('视频可以播放了',this);
});
</script>
</body>
</html>
实际效果
浏览器显⽰效果如图,可以看到标题正常显⽰了
同时,标题也可以和control-bar⼀样在⽤户不活动时⾃动隐藏
结语
通过为videojs开发titleBar组件,介绍了简单的组件开发过程.
后续将继续介绍control-bar组件的开发⽅法,以及组件点击事件和的使⽤.
到此这篇关于videojs添加⾃定义组件的⽅法的⽂章就介绍到这了,更多相关videojs添加⾃定义组件内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论