1.安装(CentOS7命令行)
#下载ffmpeg(x64二进制文件) wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
#解压文件 tar xvf ffmpeg-git--static.tar.xz && rm -rf ffmpeg-git--static.tar.xz
#将ffmpeg和ffprobe可执行文件移至/usr/bin方便系统直接调用 mv ffmpeg-git-/ffmpeg ffmpeg-git-/ffprobe /usr/bin/
#也可以使用ffmpeg一键自动安装包,安装FFMPEG和相关依赖。(如果使用二进制文件,此步略过) #https://www.ffmpegtoolkit.com/ #CentOS 7.* 64bit Latest
yum install git wget -y cd /opt git clone https://github.com/hostsoft/ffmpegtoolkit.git ffmpegtoolkit cd ffmpegtoolkit sh latest.sh
(关于网上很多的宝塔一键脚本安装,试了两次都报错 ,方法在下方) wget http://download.bt.cn/install/ext/ffmpeg.sh && sh ffmpeg.sh
2.测试是否安装成功
ffmpeg -version
3.在服务器删除禁用函数
应用到网站需要在PHP×设置中(如php5.6,php7.2…)取消掉 scandir,exec、system、shell_exec函数。
以宝塔为例
4.获取视频长度
经过上面的安装,'ffmpeg’不需要写什么安装路径,或者找什么执行文件
有些博主让直接输出秒数,本人才疏学浅,搜了好几个方法都报错,打印不出来 这个地方的$vtime没转化前为00:00:12.13的字符串
function getTime($file)
{
$vtime = exec("ffmpeg -i " . $file . " 2>&1 | grep 'Duration' | cut -d ' ' -f 4");
$duration = explode(":",$vtime);
$duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);
return $duration_in_seconds;
}
5.获取封面图
(这里我把视频和首图放在一个文件夹里面了,就改了文件后缀)
主要逻辑为下面的代码,其他的自由发挥
$command = "ffmpeg -i " . 视频绝对路径 . " -y -f image2 -t {截取的视频秒数} -s {图片宽度}x{图片高度} " . 想把图片存的位置(绝对路径);
system($command);
function getVideoCover($url, $filename, $time = 1, $width = 320, $height = 240)
{
$inFile = $url.$filename;
$filename=str_replace(strrchr($filename, "."),"",$filename) . '.png';
$outFile = $url.$filename;
$command = "ffmpeg -i " . $inFile . " -y -f image2 -t {$time} -s {$width}x{$height} " . $outFile;
system($command);
return $filename;
}
|