js获取视频某一帧

本文介绍了一个JavaScript函数getVideoImage,它接收视频URL和可选的播放时长,通过创建`<video>`和`<canvas>`元素,实现在指定时长内截取视频的第一帧并将其转换为Base64编码的图片。函数还处理了跨域问题和资源管理。
摘要由CSDN通过智能技术生成
export function getVideoImage(videoUrl, duration) {
  return new Promise((resolve, reject) => {
    const video = document.createElement("video");
    const canvas = document.createElement("canvas");
    const ctx = canvas.getContext("2d");

    // 加载视频
    video.crossOrigin = "anonymous"; // 处理跨域
    video.src = videoUrl;
    video.preload = "auto";
    video.addEventListener("loadeddata", () => {
      // 设置 canvas 尺寸与视频一致
      canvas.width = video.videoWidth;
      canvas.height = video.videoHeight;

      // 在 canvas 中绘制视频第一帧
      ctx.drawImage(video, 0, 0, canvas.width, canvas.height);

      // 获取绘制的图像数据
      const imageData = canvas.toDataURL("image/png");

      // 释放资源
      URL.revokeObjectURL(video.src);
      resolve(imageData);
    });

    video.addEventListener("error", (error) => {
      reject(error);
    });

    // 加载视频元信息
    video.addEventListener("loadedmetadata", () => {
      // 设置视频播放时长
      const videoDuration = video.duration;
      // 将视频播放时间设置为 duration
      if (duration && videoDuration > duration) {
        video.currentTime = duration;
      }
    });
  });
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值