前言:
当前姐妹们对“html5弹幕”大约比较关怀,我们都想要知道一些“html5弹幕”的相关资讯。那么小编在网上网罗了一些有关“html5弹幕””的相关知识,希望同学们能喜欢,各位老铁们一起来了解一下吧!写在最前
其实从技术实现成本角度讲,要实现弹幕效果,最简单的方法就是DOM+CSS3控制,如果我们的弹幕效果比较简单,使用CSS3动画实现也不失为一个好的方法。
但是如果我们的弹幕数据量比较大,就像下面这种:
使用DOM来实现很容易卡成了80年代的拖拉机——一顿一顿的。
很显然,面对这种多元素的复杂动画,使用canvas实现是更加合适的,动画会流畅很多。
本文就将展示使用canvas实现动态的弹幕数据可变的和真实HTML5 <video>交互的弹幕效果,也就是真视频弹幕效果。
源代码都是可以免费使用的,使用MIT许可,也就是需要保留源代码中的版权声明。
好,下面我们来看一下使用canvas来进行视频播放并且添加弹幕功能。
canvas载入视频
canvas中的drawImage方法绘制图片所需要的数据源不单单是某张图片,同样可以是使用视频的某一帧来进行绘制。就像这样:
为什么通过canvas绘制视频?
因为canvas提供了getImageData && putImageData方法使得操作者可以动态得来更改每一帧图像的显示状态,如果你知道它应该怎么变的话~
视频中的黄色背景进行色调的变化:
视频中效果截图如下:
基于canvas的图像处理可以实现很强大的功能,比如滤镜啊之类的~
腾讯的Aolly Team团队出品的AlloyImage - 基于HTML5技术的专业图像处理库就是个很好的范例~
弹幕功能
弹幕功能分为两部分:
监听新弹幕的推送渲染弹幕到页面
监听新弹幕的推送
通过维护一个弹幕数组来实时去渲染每一个弹幕字条的应有位置。而何时更新这个数组,为了解耦作者使用了发布订阅的方式来进行数组的更新。当然这里并不是一定要使用这种模式,只不过作者刚刚学习完所以拿来用一下而已。千万别喷我:)
渲染弹幕到页面
声明了一个弹幕的构造函数,内部包含了其各种属性并且在原型链中添加了draw方法来进行绘制:
源码地址
标签: #html5弹幕