//获取视频时长 function getVideoTime($file){ $duration_in_seconds = 0; $vtime = exec("/usr/local/ffmpeg/bin/ffmpeg -i ".$file." 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");//总长度 //return $vtime; //格式 00:04:42.28 if($vtime){ $duration = explode(":",$vtime); if($duration){ $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//转化为秒 } } return $duration_in_seconds; }
$time=getVideoTime($fileRootPath); $command = "/usr/local/ffmpeg/bin/ffmpeg -i {$fileRootPath} -vf 'fps=9/".$time.",scale=-1:468,drawbox=x=0:y=0:w=iw:h=ih:c=yellow:t=10,tile=3x3' -f image2 -start_number 0 -an {$path}/%d.jpg";
exec($command, $output, $return_var);
5、参数说明:
-i 输入文件,这里指的就是视频文件。
-y 表示无需询问,直接覆盖输出文件(如果有原文件的话)。
-q:v 1 q是质量,v是视频,v的取值范围是[1, 35],取值1的时候,对应着最佳的视频质量。
-vf 滤镜。
drawbox 画矩形框,x和y对应着矩形的左上角,w是矩形宽度,h是矩形高度,c是指定画的颜色,t是指定线宽(默认是4个像素)。
// fps = 1/2 每2秒截一张图,如果是每秒截一张 参数就是 fps=1
// scale 截图大小,上面的代码是设置宽为原始的1/4大小,高度自动,也可以设置成固定值如:120:80
// tile 网格化,自动将100张图合并成一张大图
结果