美文网首页
js 获取上传视频的时长

js 获取上传视频的时长

作者: 毛贵军 | 来源:发表于2018-11-01 15:59 被阅读0次

    由于用阿里云解析视频的时候,是按照视频时长收费的,为了节省测试费用,老板要我在上传之前限制一下视频的时长!

    这里通过video 的视频预览来实现的

    代码如下

    const gettime = (video, size) => {
      const promise = new Promise(resolve => {
        video.addEventListener('canplaythrough', e => {
          console.log(58, e, e.target.duration, size)
          if (e.target.duration <= size) {
            resolve(true)
          } else {
            resolve(false)
          }
        })
      })
      return promise
    }
    
    export const checkSize = async (files, size) => {
      // console.log(56, Number.isNaN(Number(size)), size)
      if (!files || !files[0]) return false
      // 这一条是正式服务器不需要这段所以当size 为undefined 时默认 返回 true
      if (Number.isNaN(Number(size))) return true
      const checktimevideo = document.getElementById('checktimevideo')
      if (checktimevideo) {
        document.body.removeChild(checktimevideo)
      }
      const video = document.createElement('video')
      const url = URL.createObjectURL(files[0])
      video.src = url
      video.id = 'checktimevideo'
      video.style.display = 'none'
    
      document.body.appendChild(video)
    
      return await gettime(video, size)
    }
    
    
    // 这个函数调用的时候也非常简单
    <input 
      type='file'
      onChange = { async e => {
        e.persist()  // 这个是用来处理 SyntheticEvent 问题的
        const isok = await checkSize(e.target.files[0], 200)  // 200 表示200秒
    } }
    />
    

    相关文章

      网友评论

          本文标题:js 获取上传视频的时长

          本文链接:https://www.haomeiwen.com/subject/veexxqtx.html