说明:项目中需要视频的封面图片,以下是如何截取视频第一帧作为封面,如需截取多个视频,按自己需要代入即可。

<template>
  <div class="about">
    <div v-if="videoUrl">
      <video
        :src="videoUrl"
        style="width:320px;height:200px;"
        controls="controls"
        id="upvideo"
      >您的浏览器不支持视频播放</video>
    </div>
    <canvas
      id="mycanvas"
      style="display: none"
    ></canvas>

    <img v-if="imgsrc" :src="imgsrc"  style="margin-top:50px;">
  </div>
</template>
<script>
export default {
  data() {
    return {
      videoUrl: "http://video.xbbzp.com/llSEAeCVtYceYvivaDJ6jz3287WX",
      imgsrc:''
    };
  },
  mounted () {
    this.findvideocover(this.videoUrl,{url:''})
  },
  methods: {
    //截取视频第一帧作为播放前默认图片
    findvideocover(url, file) {
      const video = document.getElementById("upvideo"); // 获取视频对象
      // const video = document.createElement("video") // 也可以自己创建video
      video.src = url; // url地址 url跟 视频流是一样的
      var canvas = document.getElementById("mycanvas"); // 获取 canvas 对象
      const ctx = canvas.getContext("2d"); // 绘制2d
      video.crossOrigin = "anonymous"; // 解决跨域问题,也就是提示污染资源无法转换视频
      video.currentTime = 1; // 第一帧
      video.oncanplay = () => {
        canvas.width = video.clientWidth; // 获取视频宽度
        canvas.height = video.clientHeight; //获取视频高度
        // 利用canvas对象方法绘图
        ctx.drawImage(video, 0, 0, video.clientWidth, video.clientHeight);
        // 转换成base64形式
        this.imgsrc = canvas.toDataURL("image/png"); // 截取后的视频封面
        file.url = this.imgsrc;
      };
    },
  },
};
</script>
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐