美文网首页
使用browserjs来获取图片视频等文件的大小像素码率帧率等信

使用browserjs来获取图片视频等文件的大小像素码率帧率等信

作者: 一个健康马 | 来源:发表于2023-12-17 09:14 被阅读0次

使用browserjs来获取图片视频等文件的大小像素码率帧率等信息

// 获取文件详细信息,帧率,宽高
import mediainfo from 'mediainfo.js'
export function getFileInfo(file) {
  return new Promise((resolve, reject) => {
    mediainfo({ format: 'object' }, (mediainfo) => {
      resolve(get_file_info(mediainfo, file))
    })
  })
  function get_file_info(mediainfos, 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 new Promise((resolve, reject) => {
      mediainfos
        .analyzeData(getSize, readChunk)
        .then((result) => {
          // 如果是object,可以拿到结果对象
          let res = result.media.track[1]
          if (res['@type'] == 'Image') {
            resolve({
              type: 'Image',
              data: {
                resolutionHight: res.Height,
                resolutionWidth: res.Width,
                videoFrame: null,
                audioFrequency: null,
              },
            })
          } else if (res['@type'] == 'Video') {
            resolve({
              type: 'Video',
              data: {
                resolutionHight: res.Height,
                resolutionWidth: res.Width,
                videoFrame: res.FrameRate,
                audioFrequency: null,
              },
            })
          } else if (res['@type'] == 'Audio') {
            resolve({
              type: 'Audio',
              data: {
                resolutionHight: null,
                resolutionWidth: null,
                videoFrame: null,
                audioFrequency: res.SamplingRate,
              },
            })
          } else {
            reject(null)
          }
        })
        .catch((error) => {
          console.log(error)
          // output.value = `${output.value}\n\nAn error occured:\n${error.stack}`
        })
    })
  }
}

相关文章

网友评论

      本文标题:使用browserjs来获取图片视频等文件的大小像素码率帧率等信

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