在使用php-ffmpeg库之前,需要先在你的系统环境内安装ffmpeg的扩展,安装好之后才可以使用php-ffmpeg库。
一、windows安装
去官网先下载ffmpeg,官网:http://ffmpeg.org/
找到下面图的位置下载,最后解压到电脑上(我是解压在tp6项目里的public下,因为路径要用到,当然放到服务器就不起作用了,windows只做开发环境的测试)
下面图是我放的项目位置
二、服务器安装(centos)
我是宝塔环境 直接在宝塔终端运行命令安装就行
wget http://download.bt.cn/install/ext/ffmpeg.sh && sh ffmpeg.sh
安装时间有点长别着急,安装完后可输入以下命令查看是否安装成功:
ffmpeg -version
查看安装路径
whereis ffmpeg
三、php使用ffmpeg
composer 安装 PHP-FFMpeg
在项目根目录 执行以下命令就行 :
composer require php-ffmpeg/php-ffmpeg
PHP使用ffmpeg从视频中获取封面图片
// PHP使用ffmpeg从视频中获取封面图片
public function getVideoCover()
{
$url_video = input('url_video'); //视频路径(如:mp4格式的)
// linux和windows环境执行不同的代码
if (stristr(PHP_OS, 'WIN')) {
// windows环境
$ffmpeg = \FFMpeg\FFMpeg::create([
'ffmpeg.binaries' => 'ffmreg/bin/ffmpeg.exe', # win安装的位置(我安装在项目里)
'ffprobe.binaries' => 'ffmreg/bin/ffprobe.exe' # win安装的位置
]);
} elseif (stristr(PHP_OS, 'Linux')){
// linux环境
$ffmpeg = \FFMpeg\FFMpeg::create([
'ffmpeg.binaries' => '/usr/local/bin/ffmpeg', # 服务器安装的位置
'ffprobe.binaries' => '/usr/local/bin/ffprobe' # 服务器安装的位置
]);
}
// 打开视频文件
$video = $ffmpeg->open($url_video);
$frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1)); # 提取第1秒的图像
$url_image = "static/" . md5(uniqid() . rand(1, 999)) . '.png'; # 生成图片路径
$frame->save($url_image); # 保存图片
// 上传到oss服务器
$res = AliyunService::uploadFile($url_image,'video');
$res = json_decode($res,true);
if(file_exists($url_image)){
unlink($url_image); # 删除本地图片
}
if($res['code'] == 1){
return return_info(1,"",$res['data']);
}
}
获取视频时长
// 打开视频文件 $video = $ffmpeg->open($url_video); // 获取视频时长 $duration = $video->getFormat()->get('duration');