这里要说明,ffmpeg是一款软件,拓展调用软件的功能,代码实现截取对应帧数的图片.所以整个过程有3步,安装软件,安装拓展,代码调用.因为ffmpeg分windows和linux,下马就分别记录一下windows和linxu的安装使用过程
windows下的安装和使用
a. 安装软件,官方有下载地址: http://www.ffmpeg.org/download.html ,下载速度还可以
下载之后,解压出来.这两个文件的路径后面代码会调用
b. ffmpeg拓展安装,我比较懒,直接composer安装: composer require php-ffmpeg/php-ffmpeg
c. 代码调用
$config = [
'ffmpeg.binaries' => 'D:\phpstudy_pro\Extensions\ffmpeg\bin\ffmpeg.exe', //为了方便调用,我将解压包移到了phpstudy里面,这里填写你的解压地址
'ffprobe.binaries' => 'D:\phpstudy_pro\Extensions\ffmpeg\bin\ffprobe.exe' //为了方便调用,我将解压包移到了phpstudy里面,这里填写你的解压地址
];
$ffmpeg = \FFMpeg\FFMpeg::create($config); //实例化ffmpeg对象
$videoname = ROOT_PATH .'public/uploads/202004/07/1.mp4'; //视频地址,可用绝对地址和网络地址
$video = $ffmpeg->open($videoname);
$frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1)); //获取视频的第1帧作为封面
$frame->save('radio.jpg'); //封面的保存地址,根据实际使用场景自定义
print_r(getimagesize('radio.jpg')); //获取图片属性,宽/高/大小
d. 查看结果
linux下的安装和使用
a. 安装软件,官方有下载地址: http://www.ffmpeg.org/download.html
左右两边应该都可以,不过建议下载最新的
我是在usr/local下安装
cd /usr/local
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz //下载安装包
xz -d ffmpeg-release-amd64-static.tar.xz //初次解压
tar -vxf ffmpeg-release-amd64-static.tar //二次解压
cd ffmpeg-release-amd64-static ,这两个文件的路径后面代码会调用
b. ffmpeg拓展安装,我比较懒,直接composer安装: composer require php-ffmpeg/php-ffmpeg
c. 代码调用,这里有个小坑,ffmpeg会使用php的proc_open函数,在php.ini里需要把这个禁用函数取消掉
$config = [
'ffmpeg.binaries' => '/usr/local/ffmpeg-4.2.2-amd64-static/ffmpeg', //linux中软件的解压地址
'ffprobe.binaries' => '/usr/local/ffmpeg-4.2.2-amd64-static/ffprobe' //linux中软件的解压地址
];
$ffmpeg = \FFMpeg\FFMpeg::create($config);
$videoname = ROOT_PATH .'public/uploads/202004/07/1.mp4'; //视频绝对地址或者网络地址
$video = $ffmpeg->open($videoname);
$frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1)); //获取视频的第一帧作为封面
$frame->save('radio.jpg'); //保存地址
print_r(getimagesize('radio.jpg')); //获取图片属性,宽高
d. 查看结果
至此,基本结束了,如果还有问题,欢迎留言探讨
良心博主写的这么仔细。nice