当前位置: 首页 > news >正文

getID3获取本地或远程视频时长

音频文件也可使用,使用ffmeg安装太复杂了

附ffmpeg方式:centos下安装ffmpeg_yum安装ffmpeg-CSDN博客

使用composer先安装

composer require james-heinrich/getid3

获取本地视频

 //获取本地视频
 $video_path = $_SERVER['DOCUMENT_ROOT'].$params['video'];
 $getid3 = new getID3();
 $info = $getid3->analyze($video_path);
 var_dump($info);

获取远程视频信息,也是生成临时文件,再删除,如果再上传本地的时候直接使用本地获取即可

//远程视屏地址 
$remotefilename = 'https://vdept3.bdstatic.com/mda-qfvaqpnzzj3qf31w/cae_h264/1719738331410781347/mda-qfvaqpnzzj3qf31w.mp4?v_from_s=hkapp-haokan-hbf&auth_key=1743144763-0-0-fcab6e8d4022a8b4d186e26431dcc39b&bcevod_channel=searchbox_feed&pd=1&cr=0&cd=0&pt=3&logid=3163875783&vid=16648779981624158842&klogid=3163875783&abtest=';
 if ($fp_remote = fopen($remotefilename, 'rb')) {
     $localtempfilename = tempnam('', 'getID3');
      if ($fp_local = fopen($localtempfilename, 'wb')) {
              while ($buffer = fread($fp_remote, 8192)) {
                fwrite($fp_local, $buffer);
              }
      fclose($fp_local);
      $getID3 = new getID3();
      $ThisFileInfo = $getID3->analyze($localtempfilename);
      $second = floor($ThisFileInfo['playtime_seconds']) ?? 0; //秒数向下取整
      var_dump($ThisFileInfo);//打印信息
      unlink($localtempfilename);
   }
      fclose($fp_remote);
    }

打印出来的视频信息

array(19) {
  ["GETID3_VERSION"] => string(19) "1.9.23-202310190849"
  ["filesize"] => int(8323282)
  ["filepath"] => string(35) "C:/Users/PC-8625/AppData/Local/Temp"
  ["filename"] => string(11) "getFCB0.tmp"
  ["filenamepath"] => string(47) "C:/Users/PC-8625/AppData/Local/Temp/getFCB0.tmp"
  ["avdataoffset"] => int(87891)
  ["avdataend"] => int(8323282)
  ["fileformat"] => string(3) "mp4"
  ["audio"] => array(10) {
    ["dataformat"] => string(3) "mp4"
    ["bitrate"] => int(65622)
    ["codec"] => string(19) "ISO/IEC 14496-3 AAC"
    ["sample_rate"] => float(44100)
    ["channels"] => int(2)
    ["bits_per_sample"] => int(16)
    ["lossless"] => bool(false)
    ["channelmode"] => string(6) "stereo"
    ["compression_ratio"] => float(0.046500850340136)
    ["streams"] => array(1) {
      [0] => array(9) {
        ["dataformat"] => string(3) "mp4"
        ["bitrate"] => int(65622)
        ["codec"] => string(19) "ISO/IEC 14496-3 AAC"
        ["sample_rate"] => float(44100)
        ["channels"] => int(2)
        ["bits_per_sample"] => int(16)
        ["lossless"] => bool(false)
        ["channelmode"] => string(6) "stereo"
        ["compression_ratio"] => float(0.046500850340136)
      }
    }
  }
  ["video"] => array(8) {
    ["dataformat"] => string(9) "quicktime"
    ["rotate"] => int(0)
    ["resolution_x"] => int(640)
    ["resolution_y"] => int(360)
    ["fourcc"] => string(4) "avc1"
    ["fourcc_lookup"] => string(16) "H.264/MPEG-4 AVC"
    ["frame_rate"] => float(25)
    ["bitrate"] => float(291412.00549507)
  }
  ["tags"] => array(1) {
    ["quicktime"] => array(1) {
      ["encoding_tool"] => array(1) {
        [0] => string(44) "Multimedia Cloud Transcode (cloud.baidu.com)"
      }
    }
  }
  ["comments"] => array(1) {
    ["language"] => array(1) {
      [0] => string(12) "Undetermined"
    }
  }
  ["encoding"] => string(5) "UTF-8"
  ["mime_type"] => string(9) "video/mp4"
  ["quicktime"] => array(13) {
    ["hinting"] => bool(false)
    ["controller"] => string(8) "standard"
    ["ftyp"] => array(7) {
      ["hierarchy"] => string(4) "ftyp"
      ["name"] => string(4) "ftyp"
      ["size"] => int(32)
      ["offset"] => int(0)
      ["signature"] => string(4) "isom"
      ["unknown_1"] => int(512)
      ["fourcc"] => string(4) "isom"
    }
    ["timestamps_unix"] => array(2) {
      ["create"] => array(3) {
        ["moov mvhd"] => int(-2082844800)
        ["moov trak tkhd"] => int(-2082844800)
        ["moov trak mdia mdhd"] => int(-2082844800)
      }
      ["modify"] => array(3) {
        ["moov mvhd"] => int(-2082844800)
        ["moov trak tkhd"] => int(-2082844800)
        ["moov trak mdia mdhd"] => int(-2082844800)
      }
    }
    ["time_scale"] => int(44100)
    ["display_scale"] => float(1)
    ["video"] => array(5) {
      ["rotate"] => int(0)
      ["resolution_x"] => int(640)
      ["resolution_y"] => int(360)
      ["frame_rate"] => float(25)
      ["frame_count"] => int(4613)
    }
    ["stts_framecount"] => array(2) {
      [0] => int(4613)
      [1] => int(7947)
    }
    ["audio"] => array(5) {
      ["bitrate"] => int(65622)
      ["codec"] => string(3) "mp4"
      ["sample_rate"] => float(44100)
      ["channels"] => int(2)
      ["bit_depth"] => int(16)
    }
    ["comments"] => array(1) {
      ["encoding_tool"] => array(1) {
        [0] => string(44) "Multimedia Cloud Transcode (cloud.baidu.com)"
      }
    }
    ["free"] => array(4) {
      ["hierarchy"] => string(4) "free"
      ["name"] => string(4) "free"
      ["size"] => int(8)
      ["offset"] => int(87875)
    }
    ["mdat"] => array(4) {
      ["hierarchy"] => string(4) "mdat"
      ["name"] => string(4) "mdat"
      ["size"] => int(8235399)
      ["offset"] => int(87883)
    }
    ["encoding"] => string(5) "UTF-8"
  }
  ["playtime_seconds"] => float(184.529)
  ["bitrate"] => float(357034.00549507)
  ["tags_html"] => array(1) {
    ["quicktime"] => array(1) {
      ["encoding_tool"] => array(1) {
        [0] => string(44) "Multimedia Cloud Transcode (cloud.baidu.com)"
      }
    }
  }
  ["playtime_string"] => string(4) "3:05"
}

相关文章:

  • 如何高效利用 Postman Mock Server? 模拟 API 响应,加速开发
  • Google PLA 营销库存服务设计技术难点与要点
  • 【PySpark大数据分析概述】01 大数据分析概述
  • 编程技术水平横向和垂直发展的抉择全方位分析
  • 复习一下冒泡排序算法
  • 推荐:大模型靠啥理解文字?通俗解释:词嵌入embedding
  • 06-ADC
  • MYTOOL-电路模块
  • windows安装JDK并配置环境变量
  • Arduino示例代码讲解:Serial Event example 连续事件例子
  • 鸿蒙北向应用开发:deveco 5.0 kit化文件相关2
  • python经典类、新式类写法、多继承
  • docker save如何迁移镜像更节省空间?
  • 数据结构与算法:2,冒泡排序
  • 配置完nfs后vmware虚拟机下ubuntu/无法联网问题
  • iPaaS集成平台如何帮助制造业实现数字化转型
  • 某投行日志记录解决方案二之日志异步落盘: 自定义注解+反射+AOP+异步多线程,实现高并发场景下的统一日志治理方案
  • 【Android】屏幕刷新机制(概览)
  • vs2017开启性能探测器失败
  • 【计算机操作系统】线程的概念和特点
  • 网站建设销售销售流程/百度关键词统计
  • 杭州企业seo网站优化/seo网页优化公司
  • 网站建设有什么职位/市场策划方案
  • 做网站开发学什么语言/长春网络优化哪个公司在做
  • 互联网网站开发有哪些职位/百度推广后台登陆首页
  • 网站转让 备案/seo分析报告