使用canvas对video视频某一刻截图功能


Posted in HTML / CSS onSeptember 25, 2021

前言

本次使用的是canvas.drawImage()实现截图功能, 关于api支持的dom元素、基本参数,可点击查询下面连接 CanvasRenderingContext2D.drawImage()

处理过程

我本次的需求是多人视频中对某一视频某一刻的截图,展示视频直接用的原生video标签

1、首先获取video元素和创建canvas

const video = document.getElementById('video');
const canvas = document.createElement("canvas");
const canvasCtx = canvas.getContext("2d")

2、截图的像素大小及优化

devicePixelRatio 能够返回当前显示设备的物理像素分辨率与 CSS 像素分辨率的比率,能够更好还原真实的视频场景,具体参考官方

const ratio = window.devicePixelRatio || 1;
canvasCtx.scale(ratio, ratio);

3、处理canvas画布

// canvas大小与图片大小保持一致,截图没有多余
canvas.width = video.offsetWidth * ratio;
canvas.height = video.offsetHeight * ratio;

4、生成canvas并转化成自己需要的格式,我这里就直接转成base64了
 

canvasCtx.drawImage(video, 0, 0, canvas.width, canvas.height)
const imgBase64 = canvas.toDataURL("image/png");

到此这篇关于使用canvas对video视频某一刻截图的文章就介绍到这了,更多相关canvas视频截图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
IE下实现类似CSS3 text-shadow文字阴影的几种方法
May 11 HTML / CSS
35款精致的 CSS3 和 HTML5 网页模板 推荐
Aug 03 HTML / CSS
Web页面中八种创建多列等高(等高列布局)的实现技术
Dec 24 HTML / CSS
支持IE8的纯css3开发的响应式设计动画菜单教程
Nov 05 HTML / CSS
详解如何在css3打包后自动追加前缀插件:autoprefixer
Dec 18 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
Jun 22 HTML / CSS
HTML5 微格式和相关的属性名称
Feb 10 HTML / CSS
html5教程实现Photoshop渐变色效果
Dec 04 HTML / CSS
如何用canvas实现在线签名的示例代码
Jul 10 HTML / CSS
萌新的HTML5 入门指南
Nov 06 HTML / CSS
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
May 25 HTML / CSS
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
Oct 16 HTML / CSS
使用CSS实现一个搜索引擎的原理解析
sass 常用备忘案例详解
Sep 15 #HTML / CSS
关于HTML编码导致的乱码问题
Sep 04 #HTML / CSS
使用CSS3实现按钮悬停闪烁动态特效代码
Aug 30 #HTML / CSS
深入理解CSS 中 transform matrix矩阵变换问题
Aug 30 #HTML / CSS
CSS+HTML 实现顶部导航栏功能
Aug 30 #HTML / CSS
HTML5 语义化标签(移动端必备)
Aug 23 #HTML / CSS
You might like
PHP基于单例模式实现的mysql类
2016/01/09 PHP
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Python中用于返回绝对值的abs()方法
2015/05/14 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
三八妇女节活动总结
2014/05/04 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
草房子读书笔记
2015/06/29 职场文书
初中语文教学随笔
2015/08/15 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
POST提交数据常见的四种方式
2022/01/18 HTML / CSS
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
对讲机知识
2022/04/07 无线电
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL