import * as MP4Box from 'mp4box'

/**
 * 视频编码检测
 */
export function useVideoCodec() {
  // 检测视频编码是否为H.264
  const checkVideoCodec = (file) => {
    return new Promise((resolve) => {
      try {
        const mp4boxFile = MP4Box.createFile()
        const reader = new FileReader()
        
        reader.onload = (e) => {
          try {
            const arrayBuffer = e.target.result
            arrayBuffer.fileStart = 0
            mp4boxFile.appendBuffer(arrayBuffer)
            mp4boxFile.flush()
          } catch (error) {
            console.error('视频文件解析失败:', error)
            // 如果解析失败，默认允许上传（避免阻止正常文件）
            resolve(true)
          }
        }
        
        mp4boxFile.onReady = (info) => {
          try {
            console.log('视频文件信息:', info)
            const videoTrack = info.tracks.find(track => track.type === 'video')
            if (videoTrack) {
              console.log('视频编码信息:', videoTrack.codec)
              // H.264编码通常以'avc1'或'avc3'开头
              const isH264 = videoTrack.codec.startsWith('avc1') || videoTrack.codec.startsWith('avc3')
              resolve(isH264)
            } else {
              console.log('未找到视频轨道')
              // 如果没有找到视频轨道，默认允许上传
              resolve(true)
            }
          } catch (error) {
            console.error('解析视频轨道信息失败:', error)
            resolve(true)
          }
        }
        
        mp4boxFile.onError = (error) => {
          console.error('mp4box解析出错:', error)
          // 解析失败时默认允许上传
          resolve(true)
        }
        
        reader.readAsArrayBuffer(file)
      } catch (error) {
        console.error('checkVideoCodec函数执行失败:', error)
        // 如果整个检测过程出错，默认允许上传
        resolve(true)
      }
    })
  }
  
  return {
    checkVideoCodec
  }
}
