js 获取上传视频的时长

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

这里通过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秒
} }
/>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,460评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,516评论 2 59
  • 打算重新抽烟。大学时,太妹过一小段时间,偶尔抽,再后来知道不好就没有再抽。 打算养狗。多年来身边少不了特别喜欢狗狗...
    芷妹妹阅读 1,391评论 0 1
  • 時間過去了,也就過去了,你不能讓他倒流,即使你擁有多啦A夢的時光機可以回到過去,你也不會是當初的你了。 我們總在悲...
    Kani蟹阅读 1,238评论 0 0
  • 活到老,学到老!当今知识更新之快让我们目不暇接,不找准方向,在变换中人生就匆匆过半! 然而在这个纷繁复杂的大千世界...
    小小星火阅读 1,459评论 0 0

友情链接更多精彩内容