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"
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu下终端打不开的排查思路和解决方法

问题现象描述:ubuntu开机后系统桌面显示正常,其他图形化的app也都能打开无异常,唯独只有terminal终端打不开,无论是鼠标点击终端软件,还是ctrlaltt,还是altF2后输入gnome-terminal后按回车,这三…

第一天 Linux驱动程序简介

目录 一、驱动的作用 二、裸机驱动 VS linux驱动 1、裸机驱动 2、linux驱动 三、linux驱动位于哪里? 四、应用编程 VS 内核编程 1、共同点 2、不同点 五、linux驱动分类 1、字符设备 2、块设备 3、网络设备 六、Linux驱动学习难点与误区 1、学习难点 …

探索抓包利器ProxyPin,实现手机APP请求抓包,支持https请求

以下是ProxyPin的简单介绍: - ProxyPin是一个开源免费HTTP(S)流量捕获神器,支持 Windows、Mac、Android、IOS、Linux 全平台系统- 可以使用它来拦截、检查并重写HTTP(S)流量,支持捕获各种应用的网络请求。ProxyPin基于Flutter开发&#xff0…

Windows中安装git工具

下载好git安装包 点击next 选择安装目录 根据需要去勾选 点击next 点击next PATH环境选择第二个【Git...software】即可,再点击【Next】。 第一种配置是“仅从Git Bash使用Git”。这是最安全的选择,因为您的PATH根本不会被修改。您只能使用 Git Bash 的…

Banner区域

div下 justify-content:space-between 左侧测导航left 在这里插入图片描述 在这里插入图片描述

STM32 IIC通信

目录 IIC简介硬件电路连接I2C时序基本单元IIC完整数据帧MPU6050封装硬件IIC内部电路 IIC简介 IIC(Inter-Integrated Circuit)是 IIC Bus 简称,中文叫集成电路总线。它是一种串行通信总线,使用多主从架构,由飞利浦公司…

蓝桥杯嵌入式学习笔记

用博客来记录一下参加蓝桥杯嵌入式第十六届省赛的学习经历 工具环境准备cubemx配置外部高速时钟使能设置串口时钟配置项目配置 keil配置烧录方式注意代码规范头文件配置 模块ledcubemx配置keil代码实现点亮一只灯实现具体操作的灯,以及点亮还是熄灭 按键cubemx配置k…

体育比分网站开发避坑指南:如何选择靠谱的数据服务商?(10年行业经验总结,避免踩坑!)

作为一家专业的体育比分数据服务商,我们接触过大量客户,发现很多人在开发体育比分网站或接入数据API时,由于选择不靠谱的服务商,导致项目延期、数据延迟、售后无响应、隐性收费等问题,最终影响运营效果,甚至…

VLAN综合实验二

一.实验拓扑: 二.实验需求: 1.内网Ip地址使用172.16.0.0/分配 2.sw1和SW2之间互为备份 3.VRRP/STP/VLAN/Eth-trunk均使用 4.所有Pc均通过DHCP获取IP地址 5.ISP只能配置IP地址 6.所有…

ABAP FPM

1.效果 2.查询条件的feed class SE11创建feed class数据的结构 ZCL_FPM_FIFO_SEARCH GET_DEFINITION方法代码 METHOD if_fpm_guibb_search~get_definition.eo_field_catalog_attr ? cl_abap_structdescr>describe_by_name( ZSS_FIFO_DATA ).ENDMETHOD. PROCESS_EVENT代码…

某大麦手机端-抢票

引言 仅供学习研究,欢迎交流 抢票难,难于上青天!无论是演唱会、话剧还是体育赛事,大麦网的票总是秒光。作为一名技术爱好者,你是否想过用技术手段提高抢票成功率?本文将为你揭秘大麦手机端抢票的核心技术…

【免费】2007-2019年各省地方财政文化体育与传媒支出数据

2007-2019年各省地方财政文化体育与传媒支出数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政文化体育与传媒支出 4、范围:31省 5、指标说明:地方财政在文化、…

Playwright从入门到实战:比Selenium更快的数据爬取案例实战

摘要 Playwright 是微软开源的下一代浏览器自动化工具,凭借其高性能、跨浏览器支持和现代化设计,迅速成为 Web 自动化领域的热门选择。本文将从 安装配置 开始,通过 实战演练 展示其核心功能,并与 Selenium 深度对比,…

音频知识 参数分析

通道布局 参考 通过pcm音频数据计算分贝 理解FFT和信号加窗原理及意义 dts音效大师教程

《STL 六大组件之容器探秘:深入剖析 vector》

目录 一、vector 简介二、vector 的常用接口1. 构造函数(constructor function)2. 与迭代器相关的接口(iterator)3. 与容量相关的接口(capacity)4. 与访问和修改有关的接口(access、modify&…

基于深度学习的手势识别系统设计

目录 背景与分析: 基于深度学习的手势识别系统设计 课题要求 技术分析: 技术点概述: 过程(主体展示为主,部分功能不一一展示): 数据集(17个G): 源码、…

【SpringCloud】Eureka的使用

3. Eureka 3.1 Eureka 介绍 Eureka主要分为两个部分: EurekaServer: 作为注册中心Server端,向微服务应用程序提供服务注册,发现,健康检查等能力。 EurekaClient: 服务提供者,服务启动时,会向 EurekaS…

构建大语言模型应用:简介(第一部分)

本专栏聚焦大语言模型(LLM)相关内容的解析,通过检索增强生成(RAG)应用的视角来进行。 本系列文章 简介(本文)数据准备句子转换器向量数据库搜索与检索大语言模型开源检索增强生成评估大语言模…

Python:日志模块操作及基本配置,日志格式化输出

logger(日志管理器):用户默认是root,其配置步骤为: 1.初始化对象 2.设置级别 3.定义handler(控制台或文件显示) 4.格式化输出 import logging #创建log文件并设置级别 logging.basicConfig(filenametext.log, levellogging.DEBUG) #在文…

The selected directory is not a valid home for Go SDK

安装完毕Go和GoLand之后,重新配置GoLand的GOROOT时,可能会报错 The selected directory is not a valid home for Go SDK 需要找到安装Go的目录,我的目录如下 D:\SoftFolder\Go\src\runtime\internal\sys 进入到sys文件下,找到…