canvas绘制二进制图片(Canvas获取视频第一帧缩略图的实现)
类别:Web前端 浏览量:2693
时间:2021-10-24 10:31:17 canvas绘制二进制图片
Canvas获取视频第一帧缩略图的实现记录下一个疑问,最近在重新看canvas做点Demo这样,时间是写在2019年11月5日,以后要是没有这个问题了,以W3C更新的为标准,这个只是参考 尝试着在canvas中显示视频第一帧的时候碰上的问题:在Chrome中,用 video.addEventLisener("loadeddata",func)、 video.onloadeddata = func无法在函数中获取到 未预加载的视频的第一帧的图片。同样的代码在Firefox中 未预加载的视频可以获取到第一帧,并且能够渲染到canvas中。以下都是不进行预加载的情况下运行的。
要是不能运行了就在评论里说下,我是从写的一个Demo里截下来一部分的=。=
HTML代码片段
<li class="canvas-class"> <canvas id="canvasImgDemo"></canvas> </li> <li class="img-source"> <li class="video-li"> <video id="videoSource" controls="controls" poster src="../../resources/1.mp4" onloadeddata="videoGetFirstFrame(this) ></video> </li> </li>
Chrome能显示方法
在标签中添加事件处理,这时候可以得到第一帧的图片数据。
var imgs = []; var videoGetFirstFrame = (elem) => { var canvas = document.createElement("canvas"), img = new Image(); canvas.getContext("2d").drawImage(elem, 0, 0); let dataURL = canvas.toDataURL("image/png"); img.onload = (e) => { var target = document.getElementById("canvasImgDemo"), ctx = target.getContext("2d"); ctx.drawImage(img, 0, 0, target.width, target.height); }; imgs.push(dataURL); };
Firefox下可以运行的
以下两种方法在Chrome下没法显示图片,但是在Firefox下也可以显示。在Chrome控制台你可以看见拿到的dataURL其实是一个全透明的矩形。不过在预加载、加载过或者缓存过一次视频后,canvas就有了。
方法一
JS代码片段
let elem = document.getElementById("canvasImgDemo"), ctx = elem.getContext(module.CONTEXT_TYPE), targetElem = document.getElementById(target), tagName = targetElem.tagName; ctx.drawImage(targetElem, 0, 0); var imgData = elem.toDataURL("image/png"), img = new Image(); img.onload = () => { ctx.drawImage(img, 0, 0, elem.width, elem.height); } img.src = imgData;
方法二
其实跟方法一类似,不过思路是用document创建的HTMLVideoElement作一次中转之后来触发这个loadeddata事件的发生,算是上面方法在video的应用。
let video = document.createElement("video"); video.addEventListener("loadeddata", (evt) => { ctx.drawImage(evt.target, 0, 0); let dataURL = elem.toDataURL("image/png"); let img = new Image(); img.onload = () => { ctx.drawImage(img, 0, 0, 300, 150); }; img.src = dataURL; }); video.src = targetImg.src; ctx.drawImage(targetImg, 0, 0);
到此这篇关于Canvas获取视频第一帧缩略图的实现的文章就介绍到这了,更多相关Canvas视频缩略图内容请搜索开心学习网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持开心学习网!
您可能感兴趣
- canvas心形水波(Canvas波浪花环的示例代码)
- canvas俄罗斯方块(JavaScript canvas实现俄罗斯方块游戏)
- canvas图片裁剪插件(浅析图片上传及canvas压缩的流程)
- canvas绘制渐变图形(Canvas实现放大镜效果完整案例分析附代码)
- html5canvas图形怎么打印(HTML5 Canvas 实现K线图的示例代码)
- canvas如何保存当前的图片(canvas如何实现多张图片编辑的图片编辑器)
- 微信小程序canvas 动画(微信小程序使用canvas绘制钟表)
- html5中canvas标签(html5 canvas绘制网络字体的常用方法)
- canvas如何在网页上画图形(canvas绘制图片drawImage使用方法)
- canvas绘制二进制图片(Canvas获取视频第一帧缩略图的实现)
- canvas绘制图像文件方法(Canvas多边形绘制的实现方法)
- 使用canvas画个正方形(canvas小画板之平滑曲线的实现)
- 用html5的canvas绘制剪裁图像(Html5 canvas画图白板踩坑)
- canvas怎么获取内容(详解canvas.toDataURL报错的解决方案全都在这了)
- canvas进阶教程(原生canvas制作画图小工具的踩坑和爬坑)
- canvas小程序海报(使用canvas生成含有微信头像的邀请海报没有微信头像问题)
- 关于队徽 你了解这些么 二(关于队徽你了解这些么)
- 冬天来了手脚冰凉 真不是因为上辈子你是折翼的天使(冬天来了手脚冰凉)
- 0 1 岁婴儿最强作息指南,照着做养出天使宝宝(01岁婴儿最强作息指南)
- 沪上这16所高校 萌新 礼包开箱 哪一款让你心动(沪上这16所高校萌新)
- 她救了被绑架的他,而这一切竟是一场阴谋...(她救了被绑架的他)
- 冬季养殖这6种阴生植物,方便又好养,你家有么(冬季养殖这6种阴生植物)
热门推荐
- python图片模板匹配(python实现简单图片物体标注工具)
- html5导航栏跳转(Html5跳转到APP指定页面的实现)
- vue-router底层实现原理(vue-router history模式服务器端配置过程记录)
- pythongui实战案例(Python GUI编程完整示例)
- 阿里云ecs和轻量服务器(阿里云ECS服务器入门使用流程推荐)
- dropdownlist绑定枚举值
- laravel怎么查询信息过滤(laravel多条件查询方法and,or嵌套查询)
- mysql的四种关系运算(详解MySQL拼接函数CONCAT的使用心得)
- docker多个端口怎么区分(解决docker run时候启动两个占有不同端口的问题)
- es6常用的数组方法(ES6中Set与WeakSet集合的深入讲解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9