当前位置: 首页 > article >正文

前端取视频文件的第一帧图片

通过el-upload组件上传视频文件后,取视频文件第一帧当作封面,获取视频文件的宽、高、大小、帧率、时长

const getVideoDetailInfo = (file)=> {
    const size = file.size
    return new Promise((resolve) => {
      const videoElement = document.createElement("video");
      videoElement.src = URL.createObjectURL(file.raw);
      videoElement.crossOrigin = 'anonymous'
      videoElement.currentTime = 1 //第一帧
      videoElement.addEventListener("loadedmetadata", function () {
        let width = videoElement.videoWidth
        let height = videoElement.videoHeight
        let canvas = document.createElement('canvas')
        const ctx = canvas.getContext('2d');
        videoElement.oncanplay = () => {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(videoElement, 0, 0, canvas.width,canvas.height)
          const coverUrl = canvas.toDataURL("image/png");//base64格式
          videoElement.remove();
          canvas.remove();
          const frameRate = videoElement.captureStream().getVideoTracks()[0].getSettings().frameRate; //帧率
          resolve({
            duration: videoElement.duration, //时长
            size, //大小
            width, //宽
            height, //高
            coverUrl,//封面图片
            frameRate,//帧率
            screen: width >= height ? 0 : 1
          });
        }
      });
    });
  }

http://www.kler.cn/a/503444.html

相关文章:

  • Postgres对外提供服务流程
  • pandas与sql对应关系【帮助sql使用者快速上手pandas】
  • 【算法】将单链表按值划分
  • Pycharm连接远程解释器
  • 整数和浮点数的存储
  • 【RedisStack】Linux安装指南
  • 【机器学习案列】基于朴素贝叶斯的垃圾短信分类
  • 55_OpenResty开发入门
  • boot文件与main文件(esp32)
  • 3Hive数据抽样
  • 网络安全基础以及概念
  • unity学习17:unity里的旋转学习,欧拉角,四元数等
  • 登录、注册、忘记密码、首页HTML模板
  • 【Linux】9.Linux第一个小程序进度条
  • Ubuntu安装K8S
  • 【Uniapp-Vue3】组件中emit的声明触发事件
  • 华为数通-访问控制列表
  • 网络安全的几种攻击方法
  • 【数据仓库】— 5分钟浅谈数据仓库(适合新手)从理论到实践
  • IOday6互斥和同步
  • 《拉依达的嵌入式\驱动面试宝典》—操作系统篇(七)
  • 完全二叉树的顺序存储【堆】
  • [c#] 度分秒和度的转换
  • 轨迹优化 | 基于贝塞尔曲线的无约束路径平滑与粗轨迹生成(附ROS C++/Python仿真)
  • 嵌入式系统中的 OpenCV 与 OpenGLES 协同应用
  • 【C】初阶数据结构3 -- 单链表