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

news2025/4/1 1:42:53

音频文件也可使用,使用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"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2323912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【211】线上教学系统

--基于SSM线上教学平添 主要实现的功能有: 管理员 : 首页、个人中心、学员管理、资料类型管理、学习资料管理、交流论坛、我的收藏管理、试卷管理、留言板管理、试题管理、系统管理、考试管理。 学员 : 首页、个人中心、我的收藏管理、留言板管理、考试管理。 前台…

从混乱思绪到清晰表达:记录想法如何改变你的学习人生

关键要点 • 记录想法似乎是发现自己想法并将其组织成可传播形式的最佳理由,研究表明写作和教学能增强学习和理解。 • 证据倾向于支持写作有助于澄清思想,而教学通过“教授效应”深化知识。 • 教学和分享被认为是最有效的学习方法,这与记录…

电机控制常见面试问题(二十)

文章目录 一.整流电路绕组接法二.电机为什么需要转速器三.电机转矩产生原理四.电机控制中载波频率大小的确定五.开关周期 Tpwm 一.整流电路绕组接法 为了引出直流的输出,一定要在整流变压器的二次侧引出零线,所以二次侧绕组必须接成星形 一次绕组必须要…

小爱控制via电视浏览器搜索图片-Homeassistant重制上一个自动化

制作自动化详情 为了完成图片搜,暂定指令找找{描述} 在执行脚本的adb地方输入以下指令,百度 因安全不让在图片地址直接搜转用bing >- >am start -n mark.via.gp/mark.via.Shell -a android.intent.action.VIEW -d https://cn.bing.com/images/…

unity一个图片的物体,会有透明的效果

如图 想要去掉这个透明效果 选择一个高层级的layer即可。

docker网桥问题导致ldap组件安装失败分析解决

使用pass_install_x86_64_0124版部署k8s底座、kem; 问题:一台kem节点部署ldap组件失败 解决:恢复问题主机的docker0网卡,重新部署kem相关组件 二、问题详情 现象描述 ansible部署kem组件 TASK [kem : start ldap] **********…

【Python】pillow库学习笔记1-Image类

《Python语言程序设计基础 》第3版,嵩天 黄天羽 杨雅婷著,P293 1.pillow库概述 Pillow 库是Python图像处理重要的第三方库。 Pillow库是PIL (Python image library) 库的一个扩展,需要通过pip工具安装。安装PIL库需要注意,安装…

智能网联交通加速落地,光路科技TSN技术助推车路云一体化发展

今日,为期两天的第二十七届高速公路信息化大会在青岛国际会展中心(红岛馆)圆满落幕。本次大会以“数智转型安全”为主题,聚焦高速公路数字化转型、车路云协同以及新一代信息技术的融合应用。会议汇聚了交通行业的专家学者、企业代…

boost.asio

as(async):异步 同步io: reactor (非阻塞)(需要注册一次,在等待消息时可以干别的事) 阻塞io网络模型 接口:read\accept\connect\write 接口返回时,io完成 异步…

当贝AI知识库评测 AI如何让知识检索快人一步

近日,国内领先的人工智能服务商当贝AI正式推出“个人知识库”功能,这一创新性工具迅速引发行业关注。在信息爆炸的时代,如何高效管理个人知识资产、快速获取精准答案成为用户的核心需求。当贝AI通过将“闭卷考试”变为“开卷考试”的独特设计,为用户打造了一个高度个性化的智能…

深度解读:智能体2.0 AI Agent多推演进

AI Agent即AI 代理,长期以来,研究人员一直在追求更完美的AI,可以与人类相当、甚至是超越人类。在1950年代,AIan Turing就将“智能”的概念扩展到了人工实体,并提出了著名的图灵测试。这些人工智能实体就被称为——Agen…

Golang 的 GMP 调度机制常见问题及解答

文章目录 Golang GMP 调度模型详解常见问题基础概念1. GMP 各组件的作用是什么?2. 为什么 Go 需要自己的调度器?3. GOMAXPROCS 的作用是什么? 调度流程4. Goroutine 如何被调度到 M 上执行?5. 系统调用会阻塞整个线程吗&#xff1…

项目-苍穹外卖(十五) Apache ECharts+数据统计

一、介绍 二、营业额统计 需求分析和设计&#xff1a; Controller: Service: /*** 营业额统计* param begindate* param enddate* return* */Overridepublic TurnoverReportVO turnoverStatistics(LocalDate begindate, LocalDate enddate) {//创建时间集合List<LocalDate&…

Spring Data审计利器:@LastModifiedDate详解(依赖关系补充篇)!!!

&#x1f552; Spring Data审计利器&#xff1a;LastModifiedDate详解&#x1f525;&#xff08;依赖关系补充篇&#xff09; &#x1f50c; 核心依赖解析 使用LastModifiedDate必须知道的依赖关系 #mermaid-svg-qm1OUa9Era9ktbeK {font-family:"trebuchet ms",verd…

Tweak Power:全方位电脑系统优化的高效工具

Tweak Power&#xff08;系统&#xff09; Tweak Power是一款功能强大的系统优化工具&#xff0c;专为提升Windows电脑的性能和稳定性而设计。它提供了全面的清理、优化和调整选项&#xff0c;帮助用户轻松管理系统资源、提高运行速度、延长设备寿命。 快速扫描并清理系统垃圾…

CLion下载安装(Windows11)

目录 CLion工具下载安装其他 CLion CLion-2024.1.4.exe 工具 系统&#xff1a;Windows 11 下载 1.通过百度网盘分享的文件&#xff1a;CLion-2024.1.4.exe 链接&#xff1a;https://pan.baidu.com/s/1-zH0rZPCZtQ60IqdHA7Cew?pwdux5a 提取码&#xff1a;ux5a 安装 打开…

如何用 Postman 进行高效的 Mock 测试?

Postman 是一个强大的 API 开发和测试工具&#xff0c;它可以让你轻松地创建和发送各种 HTTP 请求&#xff0c;查看响应结果&#xff0c;并进行调试和优化。但是有时候&#xff0c;你可能还没有开发好后端服务&#xff0c;或者想要模拟不同的响应场景&#xff0c;这时候就可以使…

DeepSeek API集成开发指南——Flask示例实践

DeepSeek API集成开发指南——Flask示例实践 序言&#xff1a;智能化开发新范式 DeepSeek API提供了覆盖自然语言处理、代码生成等多领域的先进AI能力。本文将以一个功能完备的Flask示例系统为载体&#xff0c;详解API的集成方法与最佳实践。通过本案例&#xff0c;开发者可快…

【天梯赛】L2-004 这是二叉搜索树吗(经典问题C++)

解题反思 //镜像树满足&#xff1a;左子树>根节点>右子树 //特殊&#xff1a;独腿二叉树&#xff0c;如pre {2&#xff0c;3&#xff0c;4}&#xff0c;递归函数用if(root tail) return&#xff1b;无法识别这种二叉树 // 用ismirror来将一般二叉树和镜像二叉搜索树的…

Postman 全局 Header 如何设置?全局设置了解一下

在使用 Postman 设置全局请求头信息的关键步骤包括&#xff1a;在集合设置页面中添加所需的头部信息&#xff0c;并确保选择适当的类型和值&#xff1b;如果需要&#xff0c;可通过 JavaScript 脚本添加其他请求头&#xff1b;最后&#xff0c;验证设置是否成功生效。 Postman…