上传本地视频前,获取视频时长,并以视频第一秒作为封面

本文介绍的是,在本地添加了需要上传的视频文件后,先获取到视频的可播放时长,并且以视频的第一秒画面作为封面图片的实现方法,之后再调用上传接口,将相关数据进行上传。【网上搜到的大部分都是先上传文件,再使用接口返回的视频地址获取封面,不符合我的需求,所以作此文进行整理】
可以先使用上传组件获取到上传的视频文件对象,如elementUI或Antd的Upload组件。
此处以elementUI的el-upload组件举例,在beforeUpload方法中,先获取到file对象,然后进行以下代码操作。

const canvas = document.getElementById("mycanvas"); // 获取 canvas 对象
const ctx = canvas.getContext
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取上传视频第一帧作为视频封面,可以使用canvas和video元素,具体过程如下: 1. 创建一个video元素,并将上传视频文件赋值给video的src属性。 2. 监听video的loadedmetadata事件,当video元素加载完元数据时,获取视频的宽高和时长等信息。 3. 创建一个canvas元素,并将其宽高设置为视频的宽高。 4. 在canvas上绘制视频第一帧画面。 5. 将canvas转换成图片,作为视频封面。 示例代码如下: ```html <video id="video" controls></video> <canvas id="canvas"></canvas> ``` ```javascript const video = document.getElementById('video'); const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); // 监听视频加载完元数据事件 video.addEventListener('loadedmetadata', function() { // 获取视频的宽高和时长 const width = video.videoWidth; const height = video.videoHeight; const duration = video.duration; // 设置canvas的宽高为视频的宽高 canvas.width = width; canvas.height = height; // 绘制视频第一帧画面 ctx.drawImage(video, 0, 0, width, height); // 将canvas转换成图片,作为视频封面 const cover = canvas.toDataURL(); console.log('视频宽度:', width); console.log('视频高度:', height); console.log('视频时长:', duration); console.log('视频封面:', cover); }); // 将上传视频文件赋值给video的src属性 video.src = URL.createObjectURL(file); ``` 其中,file为上传视频文件。注意,此方法只能在视频加载完元数据后才能获取视频的宽高和时长等信息,因此需要在loadedmetadata事件中执行相关操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值