使用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 相关文章推荐
css图标制作教程制作云图标
Jan 19 HTML / CSS
CSS3绘制有活力的链接下划线
Jul 14 HTML / CSS
CSS3之2D与3D变换的实现方法
Jan 28 HTML / CSS
CSS3 animation ? steps 函数详解
Aug 30 HTML / CSS
css3 flex布局 justify-content:space-between 最后一行左对齐
Jan 02 HTML / CSS
关于css中margin的值和垂直外边距重叠问题
Oct 27 HTML / CSS
5个你不知道的HTML5的接口介绍
Aug 07 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
May 07 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
May 26 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
Aug 20 HTML / CSS
css 中多种边框的实现小窍门
Apr 07 HTML / CSS
在CSS中使用when/else的方法
Jan 18 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JS的get和set使用示例
2014/02/20 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
javascript时间函数大全
2014/06/30 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
python文件比较示例分享
2014/01/10 Python
简单实现python聊天程序
2018/04/01 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
总结python中pass的作用
2019/02/27 Python
Python3 集合set入门基础
2020/02/10 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
出国导师推荐信
2014/01/16 职场文书
房地产促销活动方案
2014/03/01 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android