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;
}