视频上传前获取视频源信息(时长,分辨率等)

视频上传前获取视频源信息(时长,分辨率等)

因为视频与图片不同,没有 new video 这种创建方法,所以使用document.createElement(‘video’),其他方式与获取图片源信息的方法一致,在这里使用了vue+element ui,在el-upload标签中的beforeupload方法,在文件上传前进行信息获取,进行校验并拦截

videoSize(file) {
      return new Promise((resolve, reject) => {
        const _URL = window.URL || window.webkitURL
        const videoElement = document.createElement('video')
        videoElement.addEventListener('loadedmetadata', function(_event) {
          const duration = Math.round(videoElement.duration)
          file.duration = duration
          file.width = videoElement.videoWidth
          file.height = videoElement.videoHeight
          if ((file.size / 1024 / 1024) > 50) {
            reject('部分上传视频超出大小限制(50M)上传失败')
          } else {
            const fileSize = (file.width / file.height)
            if (fileSize > 1.90 && fileSize < 1.92) {
              file.scale = '1.91:1'
              resolve()
            } else if (fileSize < 1.78 && fileSize > 1.76) {
              file.scale = '16:9'
              resolve()
            } else if (fileSize < 0.68 && fileSize > 0.66) {
              file.scale = '1:1.48'
              resolve()
            } else if (fileSize < 0.57 && fileSize > 0.55) {
              file.scale = '9:16'
              resolve()
            } else {
              reject()
            }
          }
        })
        videoElement.src = _URL.createObjectURL(file)
      }).then(
        () => {
          return file
        },
        () => {
          this.$message.error(file.name + '因宽高比例不符合上传失败')
          return Promise.reject()
        }
      )
    },
    beforeUpload(file) {
        return this.videoSize(file)
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值