前端实现视频播放过程中截图

主要思路

1.    播放视频:html的video标签

2.    使用html的canvas标签来实现图片的绘制

3.    将图片转成base64,然后使用html的a标签实现保存下载

代码是vue框架里面直接剪切过来的

screenshot() {
      const canvas = document.createElement("canvas"); //  创建canvas 用来截图

      // const video = document.getElementById("video"); //  创建video 用来存放被截图的视频
      const video = this.$refs.video;
      const a = document.createElement("a");
      // const a = document.getElementById("a"); //  用来自动下载图片保存到本地
      // video.setAttribute("crossOrigin", "anonymous"); //  支持跨域

      canvas.width = video.clientWidth;
      canvas.height = video.clientHeight;
      var ctx = canvas.getContext("2d");

      ctx.drawImage(video, 0, 0, canvas.width, canvas.height);

      const filename = "file_" + new Date().getTime() + ".png";
      a.setAttribute("download", filename);

      a.href = canvas.toDataURL("image/png");
      a.click();
    },
<video
      ref="video"
      id="video"
      :autoplay="autoplay"
      x5-playsinline
      playsinline
      webkit-playsinline
      muted
    >
      您的浏览器不支持 video 标签。
</video>
<div class="controls" @click.stop>
      <svg-icon class="jietu" icon-class="jietu" @click="screenshot" />
</div>

参考:js实现视频截图,视频批量截图,canvas实现 - 走看看

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容