使用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 相关文章推荐
CSS3 完美实现圆角效果
Jul 13 HTML / CSS
CSS3 开发工具收集
Apr 17 HTML / CSS
利用CSS3的transition属性实现滑动效果
Aug 05 HTML / CSS
纯CSS3单页切换导航菜单界面设计的简单实现
Aug 16 HTML / CSS
CSS3 仿微信聊天小气泡实例代码
Apr 05 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
Mar 09 HTML / CSS
Android本地应用打开方法——通过html5写连接
Mar 11 HTML / CSS
html5视频播放_动力节点Java学院整理
Jul 13 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
Jan 09 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
Jan 09 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
Nov 30 HTML / CSS
CSS基础详解
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 远程关机操作的代码
2008/12/05 PHP
php date()日期时间函数详解
2010/05/16 PHP
php下连接mssql2005的代码
2011/01/17 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
python制作朋友圈九宫格图片
2019/11/03 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
门卫人员岗位职责
2013/12/24 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
Django实现翻页的示例代码
2021/05/24 Python
Go语言编译原理之源码调试
2022/08/05 Golang