视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
canvas的视频遮罩插件实例分享
2020-11-27 18:49:25 责编:小采
文档

为一个视频添加一个覆盖物,从而挡住视频某区域,在视频的某一时间段,比如第10到第20分钟不显示划定的这块区域。应用场景包括 遮挡卫视图标 、 遮挡视频右下角广告 、 充当马赛克等。本文主要介绍了详解基于canvas的视频遮罩插件,详细介绍了如何为一个视频添加一个覆盖物,非常具有实用价值,需要的朋友可以参考下,希望能帮助到大家。

一个长视频可能包含多个遮罩,每个遮罩有特定的显示时间(在此时间外,隐藏该遮罩)。

前端实现视频遮罩

有 基于p 和 基于canvas 两种技术方案,本文是使用canvas完成的。

主要原理是在HTML的video标签上贴上一个透明的canvas图层,然后响应mousedown、mousemove、mouseup事件。 由于canvas事件只是基于canvas元素,所以canvas内部每个元素(一个矩形,一个圆等)的事件响应要利用坐标来自己代码完成。

插件GitHub地址

https://github.com/cunzaizhuyi/maskPlugin

演示地址
http://htmlpreview.github.io/?https://github.com/cunzaizhuyi/maskPlugin/blob/master/mask/mask.html

实现的功能点

  1. 画遮罩(矩形)

  2. 设置遮罩样式(提供API)

  3. 遮罩移动

  4. 遮罩缩放

  5. canvas上鼠标样式变换

封装的API

名称值类型说明
1、矩形相关设置
fillStyle颜色值矩形填充色, 默认为'#eeeeee'
strokeStyle颜色值矩形边界线颜色, 默认为'#0000ff'
inRectCursor字符串当鼠标处于某个小矩形内部时鼠标样式,默认为'move'。可以设置为'pointer'之类的。
2、矩形边界上的八个小矩形 相关设置
bRectsStrokeStyle颜色值矩形边界上的小矩形的颜色,默认为'#0000ff'
bSideLengthnumber矩形边界上小矩形的边长值,默认为6
3、遮罩时间相关
masksTime 每个遮罩的开始显示时间和结束显示时间,一个遮罩对应一个矩形

masksTime举例:

[{
 maskId: 1,
 startTime: 0,
 endTime: 10,
}, {maskId: 2,
 startTime: 3,
 endTime: 13,
}]

最后

这个基于原生canvas的700多行的小插件,对于探索canvas的世界可能仅仅是一个开始。

下载本文
显示全文
专题