ffmpeg从视频中提取缩略图 合成九宫格

//获取视频时长
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张图合并成一张大图

结果

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值