JS 截取视频某一帧图片 实现视频截图

第一步:创建video用于存放需要截取的视频文件
                    <video id="player01" preload="auto" width="640" height="360" playsinline webkit-playsinline>
                    </video>
第二步:创建canvas画布,用于绘制截取到的图片

1,定义创建一个 canvas 标签;
2,指定 canvas 标签的宽高;
3, 调用canvas元素中的 getContext() 方法(返回一个用于在画布上绘图的环境)。

 var canvas = document.createElement("canvas");
    
    canvas.width = player.clientWidth;
    canvas.height = player.clientHeight;
    // canvas = canvas.getContext("2d")
    canvas.getContext("2d").drawImage(player.childNodes[0] , 0, 0, canvas.width, canvas.height);//截

要注意的是drawImage()的第一个参数不再是player而应该是**player.childNodes[0]**否则会出现如下报错:
在这里插入图片描述

第三步:将绘制好的图片转成base64格式
var dataURL = canvas.toDataURL("image/png");

将得到的base64格式的图片地址添加到网页中,这样就完成视频截图功能了!

完整示例代码
function screenShot() {
    var player = document.getElementById("player01");   //获取video的Dom节点
    player.setAttribute("crossOrigin", "anonymous");  //添加srossOrigin属性,解决跨域问题
    var canvas = document.createElement("canvas");
    
    canvas.width = player.clientWidth;
    canvas.height = player.clientHeight;
    // canvas = canvas.getContext("2d")
    canvas.getContext("2d").drawImage(player.childNodes[0] , 0, 0, canvas.width, canvas.height);//截
    var dataURL = canvas.toDataURL("image/png");  //将图片转成base64格式
    let str = ` <li class="screenshot-item">
    <div class="shot-time">2022-10-17</div>
    <img src="${dataURL}" alt="" class="shot-img">
</li>`
    $("#screenshot-list").append(str);   //显示在页面中
    viewer.destroy(); //需要先销毁再渲染
    viewer = new Viewer(document.getElementById(`screenshot-list`))
}

在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值