PHP ffmpeg的下载安装,及获取视频长度及封面图

1.安装(CentOS7命令行)

#下载ffmpeg(x64二进制文件)
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz

#解压文件
tar xvf ffmpeg-git-amd64-static.tar.xz && rm -rf ffmpeg-git-amd64-static.tar.xz
在这里插入图片描述

#将ffmpeg和ffprobe可执行文件移至/usr/bin方便系统直接调用
mv ffmpeg-git-amd64-static/ffmpeg ffmpeg-git-amd64-static/ffprobe /usr/bin/
(转移文件前需ls,确认文件夹的名字是否为 ‘ffmpeg-git-amd64-static’,不是的需要改过来)
在这里插入图片描述

2.测试是否安装成功

ffmpeg -version

在这里插入图片描述

3.在服务器删除禁用函数

应用到网站需要在PHP×设置中(如php5.6,php7.2…)取消掉 scandir,exec、system、shell_exec函数。

以宝塔为例
在这里插入图片描述

4.获取视频长度

经过上面的安装,'ffmpeg’不需要写什么安装路径,或者找什么执行文件

有些博主让直接输出秒数,本人才疏学浅,搜了好几个方法都报错,打印不出来
这个地方的$vtime没转化前为00:00:12.13的字符串

/**
 * 获取视频长度
 * @param $file 为视频在服务器中的绝对位置
 * @return array
 *
 */
function getTime($file)
{
	
    $vtime = exec("ffmpeg -i " . $file . " 2>&1  | grep 'Duration' | cut -d ' ' -f 4");//CuPlayer.com提示总长度

    $duration = explode(":",$vtime);
    $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//CuPlayer.com提示转化为秒
    return $duration_in_seconds;
}

5.获取封面图

(这里我把视频和首图放在一个文件夹里面了,就改了文件后缀)

主要逻辑为下面的代码,其他的自由发挥

 $command = "ffmpeg -i " . 视频绝对路径 . " -y -f image2 -t {截取的视频秒数} -s {图片宽度}x{图片高度} " . 想把图片存的位置(绝对路径);   
 system($command);
/**
 * 获取视频封面图片
 * @param string $inFile 视频文件地址
 * @param string $url 视频存储的绝对路径
 * 						(不包括存入数据库的路径)
 * @param string $filename 视频的名称与存入数据库的路径
 * 							(我存的路径一般为/public/uploads/时间文件夹/文件名)
 * @param int $time 截图的秒数
 * @param int $width 图片宽度
 * @param int $height 图片高度
 */
function getVideoCover($url, $filename, $time = 1, $width = 320, $height = 240)
{
    $inFile = $url.$filename; //拼出视频的绝对路径
    $filename=str_replace(strrchr($filename, "."),"",$filename) . '.png';//截取掉视频的后缀,更改为图片的后缀
    //输出文件路径
    $outFile = $url.$filename;//根据上面的$filename拼接出图片的名称和存储路径
    //运行命令
    $command = "ffmpeg -i " . $inFile . " -y -f image2 -t {$time} -s {$width}x{$height} " . $outFile;
    system($command);
    //这地方返回了图片的路径及名称,
    return $filename;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值