视频封面自动播放两秒钟html,使用videojs轻松搭建一个播放器

之前在项目中有视频播放的这样一个需求,它需要:

1.播放器不采用默认样式,重新设计;

2.兼容IE浏览器

3.后续增加字幕、清晰度等功能

总的看来,若是重新全部自己去写这些功能,是很耗费时间和人力的。所以找到了videojs这样一个可以满足我们所有要求的js库。下面总结下使用这个库时的一些经验。

一、入门

videojs可以让我们很迅速便捷地搭建出一个兼容各浏览器的视频播放器。代码如下。

To view this video please enable JavaScript, and consider upgrading to a web browser that

supports HTML5 video

类名须加上“video-js”,若想要兼容IE8的话,则引入的js文件为videojs-ie8.min.js,否则为video.js。

二、播放器组件与初始化

默认支持的组件有以下这些:

Player

PosterImage //默认封面

TextTrackDisplay

LoadingSpinner

BigPlayButton //大播放按钮

ControlBar // 控制条

PlayToggle //播放暂停

FullscreenToggle //全屏

CurrentTimeDisplay //当前播放时间

TimeDivider

DurationDisplay

RemainingTimeDisplay //剩余播放时间

ProgressControl //时间轴

SeekBar

LoadProgressBar

PlayProgressBar

SeekHandle

VolumeControl //音量控制

VolumeBar

VolumeLevel

VolumeHandle

PlaybackRateMenuButton //播放速率

而初始化播放器的方法很简单,一种是在HTML里data-stup设置,比如autoplay:false即是不自动播放:

另一种是在js里初始化,可以控制是否显示该组件,true显示、false不显示。

var options = {

controlBar:{ //设置是否显示该组件

'currentTimeDisplay':true,

'timeDivider':true,

'durationDisplay':true,

'remainingTimeDisplay':false

},

autoplay: true

};

//初始化播放器

videojs(('#my-video', options, function() {

console.log('播放器初始化完成'); //回调函数

});

三、�事件与方法

videojs支持的事件和方法有很多,常用的有以下这些:

EVENTS

durationchange

ended

firstplay

fullscreenchange

loadedalldata

loadeddata

loadedmetadata

loadstart

pause

play

progress

seeked

seeking

timeupdate

volumechange

waiting

resize inherited

METHODS

dispose

duration

ended //结束

error //错误

exitFullscreen //退出全屏

loop //循环

muted //静音

pause //暂停

paused //检测是否暂停的状态

poster //静态图片

remainingTime //余下时间

四、状态类名

播放器初始化后,我们可以看到这样的结构

ea1d444fd4de80795b9030ae00658da0.png

可以看到在外层div有很多类名,在播放器切换不同状态的时候会改变这些类名,那么通过这些类名即可知道当前播放器处于什么状态,这会对我们开发有很大的帮助。

vjs-playing //播放状态

vjs-paused //暂停状态

vjs-waiting //播放buffer为空,等待数据中 (对应播放事件中的waiting)

vjs-seeking //seeking中 (对应播放事件中的seeking)

vjs-ended //播放结束

vjs-has-started //播放已经开始了,默认组件的posterImage就是通过这个class来隐藏自己

vjs-live //当前播放的是直播流,controlBar组件中的liveDisplay子组件通过这个来显示自己

vjs-controls-disabled //应该隐藏所有的控制组件时,例如有错误发生时

vjs-error //有错误时

vjs-user-inactive //用户当前处于非活动状态

vjs-user-active //用户处于活动状态, 活动状态是指用户最近是否有移动鼠标或者点击按钮等操作。

//这种活动状态在没有新操作情况下,默认维持两秒,然后就进入非活动状态。

//在非活动状态下,一般会隐藏控制条的显示,这时候就用到这两个class了

//活动状态维持的时间可以配置,配置选项中默认 inactivityTimeout:2000

五、皮肤

要根据产品风格去设计播放器的样式,所以样式的重置是必不可少的。接下来说下在修改播放器样式时踩到的一些坑。

1.icon及颜色修改

通过覆盖样式去重置样式。比如修改颜色

.vjs-control-bar{

color:red;

font-size:20px;

}

4b83ab61717e936066fd64c41d60a6af.png

IE下的兼容比较苦,若是实在难改,建议直接在videojs.css里全部重写修改

2.组件顺序

组件放置顺序的修改,在video.js中找到这段代码,将数组里的顺序修改下就可以了。

ControlBar.prototype.options_ = {

loadEvent: 'play',

children: ['playToggle', 'volumeMenuButton', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'chaptersButton', 'subtitlesButton', 'captionsButton', 'fullscreenToggle']

};

3.hover提示

组件hover提示同理,找到源码修改就好了

k.prototype.controlText_ = "Play" ------> k.prototype.controlText_ = "播放"

k.prototype.controlText_ = "Fullscreen" ------> k.prototype.controlText_ = "全屏"

4.音量bar由横的变竖的

var options = {

volumeMenuButton: {

inline: false,//设置音量bar为竖直

vertical: true//设置音量bar为竖直

}

};

//初始化播放器

videojs(('#my-video', options, function() {

console.log('播放器初始化完成'); //回调函数

});

六、插件

videojs提供了较为全面的基础功能,但还有些我们在产品中需要的功能是没有的。而现在有很多强大的插件来弥补这些不足。

比如切换清晰度功能我们用到了resolution-switcher-master插件。

使用方法如下

//引入插件的js文件

demo地址:https://kmoskwiak.github.io/videojs-resolution-switcher/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一种简单的方法来制作一个使用JavaScript和HTML5的图片自动轮播。您可以按照以下步骤进行操作: 1. 创建一个HTML文件,并在文件中添加一个`<div>`元素用于容纳图片轮播。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图片自动轮播</title> <style> #slideshow { width: 600px; height: 400px; position: relative; overflow: hidden; } #slideshow img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: opacity 1s ease-in-out; } #slideshow img.active { opacity: 1; } </style> </head> <body> <div id="slideshow"> <img src="image1.jpg" class="active"> <img src="image2.jpg"> <img src="image3.jpg"> </div> <script src="slideshow.js"></script> </body> </html> ``` 2. 在`<head>`标签中添加CSS样式,用于设置轮播图的大小和位置,以及设置图片的透明度和过渡效果。 3. 在`<body>`标签中添加一个`<div>`元素用于容纳图片轮播,并在其中添加多个`<img>`元素,每个元素对应一张图片。其中,第一张图片的`class`属性设置为“active”,表示它是当前显示的图片。 4. 在`<body>`标签的末尾添加一个`<script>`标签,并将脚本文件`slideshow.js`的路径设置为该标签的`src`属性。 5. 在`slideshow.js`文件中编写JavaScript代码,实现图片自动轮播的功能。 ```javascript var slideshow = document.getElementById("slideshow"); var slides = slideshow.getElementsByTagName("img"); var currentSlide = 0; var slideInterval = setInterval(nextSlide, 3000); function nextSlide() { slides[currentSlide].className = ""; currentSlide = (currentSlide + 1) % slides.length; slides[currentSlide].className = "active"; } ``` 6. 在JavaScript代码中,首先获取图片轮播的容器元素和所有图片元素。然后,设置一个变量`currentSlide`表示当前显示的图片的索引,初始值为0。接着,使用`setInterval()`函数设置一个定时器,每隔3秒钟调用一次`nextSlide()`函数。 7. `nextSlide()`函数的功能是将当前显示的图片元素的`class`属性设为空,将`currentSlide`的值加1,然后将下一张图片元素的`class`属性设为“active”,表示它将成为下一个显示的图片。如果当前显示的图片是最后一张图片,则将`currentSlide`的值重置为0,从第一张图片重新开始轮播。 这样,一个简单的使用JavaScript和HTML5制作的图片自动轮播就完成了。您可以根据需要调整样式和脚本,以满足您的具体需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值