分享下 PHP 使用 getID3 来获取音频、视频等媒体文件相关信息

起因

最近在家办公中,碰到需要处理一些视频文件的操作,公司一直使用的某云存储,处理图片的接口倒是挺多,但是视频类的一些处理就需要开通另外的服务了,捣鼓了一圈子还是决定自己处理给公司省点钱吧。

PHP在本地处理视频等媒体文件的时候一般都是借助了 『ffmpeg』,但是代码有点太老,扩展安装又出了幺蛾子,搞了一下午好累。

后面发现还有 getID3 也可以用来处理相关媒体文件信息,这是一个PHP脚本,只需要简单引入项目即可,不需要安装额外的扩展或者工具。但是问题又来了,国外的下载速度死慢,1.4M的东西下载了1个多小时哭死我。

期间找了下发现都是 C*DN 的资源而且都要积分(作为一名常年白嫖党,怎么可能会有这东西),广告满天飞不说,而且越来越不像个技术社区,真的是好讨厌。

为了帮助更多有需要的人可以使用还是来我们社区分享吧!

下载

getID3官方地址

Github下载地址

SourceForge下载地址

腾讯云下载地址

备用下载地址

使用

因为这不是一个标准的符合 PSR-4 规范的包(没有命名空间,类名也不咋地没细看),如果在项目要使用的话直接添加整个文件夹,然后引入 getid3/getid3.php 即可。如果是在 Laravel 中可以这样引入。

  • 解压文件,把文件夹放到项目下,我是放到了 vendor 下(包里有很多无用的文件都可以删除)
  • 编辑 composer.json 文件
  • 找到 autoload 在其下面的 files 数组中追加引入
    "vendor/getID3/getid3/getid3.php",
    "vendor/getID3/getid3/getid3.lib.php"
  • 然后执行 composer dump-autoload
  • 最后在需要使用的地方引入即可

下面是一个demo

$path = storage_path('uploads/60EB4401-33A3-27AE-F03E-B54E7282CB5F.mp4');
$mediaTool = new \getID3();
$mediaInfo = $mediaTool->analyze($path);
dd($mediaInfo);

里面会有很多的属性,看自己的需要来取吧。比如其中的 playtime_seconds 就是媒体的时长。

最后

其实上面这些都是被逼无奈,终归属于“野路子”处理。反正现在大家都是存云服务,花点钱应该的毕竟人家的服务确实也可以嘛,而且省事什么转码,水印,自动识别之类功能齐全。最后吐槽下最近在家公办真的变成996了,连蹲个坑都得随时待命,不能离开10分钟不回消息,希望疫情早日过去吧,祝愿大家都能健康平安!

本作品采用《CC 协议》,转载必须注明作者和本文链接
微信公众号:码咚没 ( ID: codingdongmei )
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

哈哈。看来是在家上班了,然后其他人就没有上班下班的概念了。不知道过了下班的点就最好不要找别人改bug了

4年前 评论

"找到 autoload 在其下面的 files 数组中追加引入" 这个步骤可以忽略吧,我是这么装的 composer require james-heinrich/getid3

4年前 评论

"找到 autoload 在其下面的 files 数组中追加引入" ,应该是classmap数组吧

3年前 评论

一个视频 有 1个小时, 获取视频 时长 , 需要 很久 ,1分钟以上, 怎么 快速 获取?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!