linux下php执行ffmpeg命令快速获取音频时长

时间:2024-04-03 08:12:26

由于项目中有个需求需要获取app录音文件的时长,通过调研,发现有一个php第三方类getid3,但有的格式如wav格式的音频好像不能正常获取时长,ffmpeg由此登场。

ffmpeg是一款非常强大的音视频处理开源程序,平时用到的视频剪辑,视频加水印等等都可以通过ffmpeg命令实现,比界面化的程序更加简单快捷。

以下安装测试均在centos下进行

安装

具体安装详见(https://www.linuxidc.com/Linux/2018-10/154934.htm)

sudo yum install -y epel-release rpm

yum repolist

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

sudo yum repolist

sudo yum install -y ffmpeg

安装完后执行

ffmpeg -version

结果如下说明安装成功
linux下php执行ffmpeg命令快速获取音频时长

使用

#linux下:

ffmpeg -i /tmp/1.mp3 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//

#输出 00:05:18.82
#php下:

$path = "/tmp/1.mp3";
$time = exec("ffmpeg -i " . escapeshellarg($path) . " 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");
list($hms, $milli) = explode('.', $time);
list($hours, $minutes, $seconds) = explode(':', $hms);
$total_seconds = ($hours * 3600) + ($minutes * 60) + $seconds;
echo $total_seconds;

#输出时长秒数 308

到此就可获取录音时长,很方便有木有。
更多精彩文章,请关注公众号:佟是佟佟的佟
linux下php执行ffmpeg命令快速获取音频时长