canvas与h5如何实现视频截图功能

这次给大家带来canvas与h5如何实现视频截图功能,canvas与h5实现视频截图功能的视频有哪些,下面就是实战案例,一起来看一下。

这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~

制作方法:

1.在页面中加载视频

在使用canvas制作这个截图功能时,首先必须保证页面上已经加载完成了这个视频,这样才能够方便的对其操作。如果使用下面直接嵌入

登录后复制

在我的那篇《html5与视频》中讲到,浏览器对视频的预加载progress以及load事件支持不同,会影响video的播放及其他事件的触发。所以我们在这里使用js构造video的方式来引入视频。

这种方式引入视频要注意,不能引入多个source,所以要先判断浏览器对视频格式的支持。

1.1使用video的canPlayType()方法判断支持格式

canPlayType()方法需要传入一个参数,这个参数就是video的格式,

常用值:video/ogg;

    video/mp4;

    video/webm;

或者包括编码器:

    video/ogg;codecs=”theora,vorbis”

    video/mp4;codecs=”avc1.4D401E, mp4a.40.2″

    video/webm;codesc=”vp8.0, vorbis”

返回值:表示网页的支持级别:”probably”-最有可能支持(输入值带编码器的时候只返回这个);”maybe” – 可能支持;”” – (空视频)不支持;

function videoType(video){    var returnType='';    if(video.canPlayType('video/mp4')=='probably'||video.canPlayType('video/mp4')=='maybe'){      returnType= 'mp4';    }else if(video.canPlayType('video/ogg')=='probably'||video.canPlayType('video/ogg')=='maybe'){
    returnType= 'ogg';   
   }else if(video.canPlayType('video/webm')=='probably'||video.canPlayType('video/webm')=='maybe'){
    returnType= 'webm';   
   }
   return returnType; }

登录后复制

这个函数可以判断浏览器对video支持的格式。

 1.2使用js动态加载video标签

这里判断了浏览器的支持格式后,由于我用的是chrome,所以我的浏览器支持mp4格式的视频,然后我们动态创建一个video标签。

var videoElem;var videop;function createVideo(){     videoElem=document.createElement("video");//创建video     videop=document.getElementById("videopanel");//获取video的外层容器     videop.appendChild(videoElem);     var vtype=videoType(videoElem);//判断浏览器支持的格式     if(vtype==""){        videop.innerHtml('不支持video')    }else{        videoElem.setAttribute('src',"text."+vtype);    }}

登录后复制

由于这里我们要制作截图功能,单纯的video不具备截图的接口,所以我们要把它复制到canvas上,在canvas上播出这个视频,所以这里我们先把video给隐藏掉(视频:none)。

2.使用canvas复制视频

现在video已经在浏览器上播放了,接下来我们把它复制到canvas里,首先建立canvas,然后得到画布context,这些就不说了。如何把video画在canvas上,这里我们要使用一个函数。drawImage函数的用法

1.drawImage(img,x,y):在画布的(x,y)这个位置画一个img;

2.drawImage(img,x,y,width,height):在画布的(x,y)这个位置画一个width宽,height高的img;

3.drawImage(img,sx,sy,swidth,sheight,x,y,width,height):在画布的(x,y)位置画一个img的(sx,sy)位置的swidth宽,sheight高的一块截图,画在画布上要缩放到width宽和height高。

以上就是drawImage的用法了,这个函数非常的强大。

回到做截图,我们现在已经在浏览器上创建好了画布–contextVideo,接着我们在这里把视频画出来:

contextVideo.drawImage(videoElem,0,0);

登录后复制

然后我们可以看到在canvas里画了一张图,但是视频是不断变化的,所以我们需要使用setInterval函数不断的吧video作为源来画图。

setInterval(function(){
contextVideo,drawImage(videoElem,0,0);
},100)

登录后复制

这里时间间隔的大小会影响到视频播放是否会卡。  

到这里我们就把video搬到canvas上展示了。接下来制作截图。

 3.制作截图展示canvas面板

这里我们需要再在页面上画一个canvas画布–contextImg,然后再次利用drawImage方法,截图。

contextImg.drawImage(canvasVideo,0,0,canvasVideo.width,canvasVideo.height);

登录后复制

这段代码将第一个canvas画到了第二个canvas上。

4.制作截图按钮

制作一个按钮,然后绑定click事件,点击后就调用上一步的函数,这样就可以制作一个截图了。

当图截好后可以将图右键保存下来,然后倒入ps制作表情包了。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

视频

视频

以上就是canvas与h5如何实现视频截图功能的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3124916.html

(0)
上一篇 2025年3月29日 19:32:38
下一篇 2025年3月29日 19:33:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用html5的FormData对象,通过 Ajax表单异步提交文件数据

    每次在向服务器提交文件对象数据是,总是需要借助各种三方插件来实现表单异步提交功能,还要为不同的界面去定制不同的插件css,相当繁琐。xmlhttprequest level 2 添加了一个新的接口——formdata。利用 formdata…

    编程技术 2025年4月4日
    100
  • html5的八大技术特征简介

    html5的八大技术特征简介:   HTML5 这个词获得了它自己的生命。无论是在开发者还是公众社区中,这个词的指代对象早已超过了简简单单一个标准的范畴,以至于来带了诸多的不解和争论。这套标准 需要一个标准。那就是,HTML5需要一组一致的…

    编程技术 2025年4月4日
    200
  • HTML5 Canvas 起步(1) – 基本概念

    什么是canvas  是一个新的 HTML 元素,这个元素在 HTML5 中被定义。这个元素通常可以被用来在 HTML 页面中通过 JavaScript 进行绘制图形、合成图像等等操作,也可以用来做一些动画。当然,目前 HTML5 规范还在…

    编程技术 2025年4月4日
    200
  • html5 worker 实例(一) 为什么测试不到效果

    很多人在测试worker api的时候,总是会出现异常,根本测试不到效果。 在使用worker的时候有个必须注意的地方,就是单纯的文本文件是实现不了worker的,你写的实际代码 必须部署到服务器(tomcat.jboss等)才能运行wor…

    编程技术 2025年4月4日
    200
  • html5 worker 实例(二) 图片变换效果

    worker的js代码img.js  onmessage = function(e) { postMessage(filter(e.data)) }; function filter(imgd) { var pix = imgd.pixel…

    编程技术 2025年4月4日
    200
  • 关于HTML5和CSS替换使用

    听到html5的都知道它的强大,如更多的描述性标记、较少依赖于插件的多媒体支持、跨文档消息通信、web sockets、客户端存储、更强大的表单、提升可访问性、先进的选择器、强大的视觉效果。费话不多说,细细说来 被废弃的标签和属性 废弃的标…

    编程技术 2025年4月4日
    100
  • 利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖

    摇一摇js脚本逻辑:接下来是移动端js脚本逻辑的实现,摇一摇的实现需借助html5新增的devicemotion事件,获取设备在位置和方向上的改变速度的相关信息,该事件的基本使用如下: if (window.DeviceMotionEven…

    编程技术 2025年4月4日
    100
  • H5的video标签操作摄像头

    这次给大家带来H5的video标签操作摄像头,H5的video标签操作摄像头注意事项有哪些,下面就是实战案例,一起来看一下。 详解HTML5 使用video标签实现选择摄像头功能 1. html // jquery reference //…

    编程技术 2025年4月4日
    100
  • H5的文本格式化使用方法

    这次给大家带来H5的文本格式化使用方法,H5文本格式化使用的注意事项有哪些,下面就是实战案例,一起来看一下。 注意事项对于我们编写注意事项也是非常重要的,各种各样的样式都需要使用到文本格式化,具体什么效果呢? 加粗文本斜体文本电脑自动输出这…

    编程技术 2025年4月4日
    100
  • HTML5离线应用与客户端存储的实现

    这篇文章主要介绍了html5离线应用与客户端存储的实现的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 支持离线 Web 应用开发是 HTML5 的另一个重点。所谓离线 Web 应用,就是在设备不能上网…

    编程技术 2025年4月4日
    200

发表回复

登录后才能评论