一,介绍
因项目需要获取上传音频时长,网上找的都是用ffmpeg,嫌弃安装太麻烦,使用起来也不是太方便,在github找到这个库,能满足需求,毕竟能简单解决的问题没必要太复杂,哈哈哈哈~
具体可前往Github:https://github.com/JamesHeinrich/getID3/
(1)支持的音频格式
Ogg,WMA,WMV,ASF,WAV,AVI,AAC,VQF,FLAC,MusePack,Real,QuickTime,Monkey’s Audio,MIDI等
(2)支持的视频格式
ASF: ASF, Windows Media Audio (WMA), Windows Media Video (WMV),AVI (RIFF),Flash,Matroska (MKV),MPEG-1 / MPEG-2,NSV (Nullsoft Streaming Video),Quicktime (including MP4),RealVideo等
(3)支持的图片格式
BMP,GIF,JPEG,PNG,TIFF,SWF (Flash),PhotoCD等
二,类库下载
- 官方下载
- 通过composer引入
composer require james-heinrich/getid3
三,使用测试
使用的TthinkPHP5.1版本进行测试,getID3版本为1.9.20,测试本地文件:
namespace app\index\controller;
use think\Controller;
use getID3;
class Index extends Controller
{
public function index()
{
$getID3 = new getID3;
$path = env('root_path') . "public/";
// 音频文件
$audioFile = $path . "Kalimba.mp3";
// 视频文件
$videoFile = $path . "Wildlife.wmv";
// 分析文件
$audioFileInfo = $getID3->analyze($audioFile);
$videoFileInfo = $getID3->analyze($videoFile);
// 测试获取视频,音频时长信息
// 获取秒数
$audioSecond = $audioFileInfo['playtime_seconds'];
// 获取格式化时长
$audioFormat = $audioFileInfo['playtime_string'];
dump($audioSecond);
dump(gmdate("H:i:s", $audioSecond));
dump($audioFormat);
}
}
测 试 数 据 \color{#FF0000}{测试数据} 测试数据
thinkphp\library\think\Debug.php:226:float 348.0555
thinkphp\library\think\Debug.php:226:string '00:05:48' (length=8)
thinkphp\library\think\Debug.php:226:string '5:48' (length=4)
数 据 对 比 \color{#FF0000}{数据对比} 数据对比
五,分析远程文件使用
$remotefilename = 'http://www.example.com/filename.mp3';
if ($fp_remote = fopen($remotefilename, 'rb')) {
$localtempfilename = tempnam('/tmp', 'getID3');
if ($fp_local = fopen($localtempfilename, 'wb')) {
while ($buffer = fread($fp_remote, 8192)) {
fwrite($fp_local, $buffer);
}
fclose($fp_local);
// Initialize getID3 engine
$getID3 = new getID3;
$ThisFileInfo = $getID3->analyze($localtempfilename);
// Delete temporary file
unlink($localtempfilename);
}
fclose($fp_remote);
}
总结:视频或者其他文件获取信息类似,其他文件信息可打印数组,这里只是简单获取了一下时长数据。里面也内置了一些其他使用方法,有其它需求的可以研究下下载的文件夹内的文件