mediainfo.js获取视频详细信息,js获取视频帧数

需求:上传视频的时候需要知道该视频的帧数等信息,input的file直接读取是不能读取帧数的

方式:通过引入mediainfo.js来获取视频的帧率和视频的总时长,用帧率*时长得出总帧数

栗子:

上面输出格式是 text 我们可以根据需要将格式设为 json 对象,这样就能获取想要的信息了

//这是text 格式
MediaInfo({ format: 'text' }, (mediainfo) => {
  fileinput.addEventListener('change', () => onChangeFile(mediainfo))
})
//可以改为 json 对象格式
MediaInfo({ format: 'object' }, (mediainfo) => {
  fileinput.addEventListener('change', () => onChangeFile(mediainfo))
})

然后在 get_file_info 方法中将需要的信息获取出来使用就可以了

function get_file_info(mediainfo, file) {
  let getSize = () => file.size
  let readChunk = (chunkSize, offset) =>
    new Promise((resolve, reject) => {
      let reader = new FileReader()
      reader.onload = (event) => {
        if (event.target.error) {
          reject(event.target.error)
        }
        resolve(new Uint8Array(event.target.result))
      }
      reader.readAsArrayBuffer(file.slice(offset, offset + chunkSize))
    })

  return mediainfo
    .analyzeData(getSize, readChunk)
    .then((result) => {
        // 如果是object,可以拿到结果对象
        let res = result.media.track[1];
        console.log(res)
        //获取帧数和总时长
        console.log(res.FrameRate,res.Duration);
    })
    .catch((error) => {
      output.value = `${output.value}\n\nAn error occured:\n${error.stack}`
    })
}

 注意,当传入.avi格式时是不能获取到帧率的,因为我的视频格式统一是25帧率,所以我给了一个默认值25。详细信息见官网的使用

这个demo需要放到http服务中访问才能正确使用,或者使用CDN在线地址引入mediainfo.js

<script src="https://unpkg.com/mediainfo.js/dist/mediainfo.min.js" ></script> 

 

mediainfo 在线使用地址

demo下载地址(这个demo需要放到http服务中才能正确使用)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值