写在前面
FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
在PHP中使用ffmpeg,可以用开源composer包 php-ffmpeg,不过使用前提是安装了ffmpeg。部分情况下还需要安装ffprobe。
命令: composer require php-ffmpeg/php-ffmpeg
1. 安装ffmpeg
在大多数 Linux 发行版中,ffprobe 是 FFmpeg 包的一部分,你可以通过包管理器安装它。
例如,对于 Ubuntu/Debian 系统:
sudo apt update
sudo apt install ffmpeg
对于 CentOS/RHEL 系统:
sudo yum install epel-release
sudo yum install ffmpeg ffmpeg-devel
2. 使用php-ffmpeg
我项目用的框架是Laravel,用ffmpeg目的是获取视频时长。
开始按照github文档编码测试,问题出现了,用命令行可以成功调用ffmpeg,但是同样的代码换到Controller,(ffmpeg已配置系统环境变量),报错 Unable to load FFProbe,代码如下:
$ffprobe = FFProbe::create();
$ffprobe->format($fileUrl)->get('duration');
解决方式: 指定ffmpeg、ffmprobe的安装路径.该路径要根据自己Linux系统中实际路径设置,不同系统可能略有差异。
$config = [
'ffmpeg.binaries' => '/usr/bin/ffmpeg', //根据实际路劲修改
'ffprobe.binaries' => '/usr/bin/ffprobe'//根据实际路劲修改
];
$ffprobe = FFProbe::create($config);
$videoDuration = $ffprobe->format($fileUrl)->get('duration');
再测试可以成功获取到视频时长了!