因此,此命令可用于在视频中生成5秒的缩略图,大小为300x300:

$cmd = '/usr/local/bin/ffmpeg -i '.$this->getUploadRootDir().'/'.$fname.' -ss 00:00:05 -f image2 -vframes 1 -s 300x300 '.$this->getUploadRootDir().'/thumb_'.$output;


但是,我想保持宽高比,所以我将代码更改为:

$cmd = "/usr/local/bin/ffmpeg -i ".$this->getUploadRootDir()."/".$fname." -ss 00:00:5 -f image2 scale='min(300\, iw):-1' ".$this->getUploadRootDir()."/thumb_".$output;


上面的代码可以正确调整图像的大小,但是它是视频中的第一帧。我需要将缩略图设置为5秒钟。任何帮助将不胜感激。

最佳答案

您可以使用类似于以下命令的命令行来执行此操作:

ffmpeg -i inputVideo -vf scale='min(300,iw)':-1 -ss 00:00:05 -f image2 -vframes 1 thumbnail.jpg


因此,在脚本中,在缩放之前添加-vf(视频过滤器),并对输入和输出参数进行重新排序,如下所示:

$cmd = "/usr/local/bin/ffmpeg -i ".$this->getUploadRootDir()."/".$fname." -vf scale='min(300\, iw):-1' -ss 00:00:5 -f image2 -vframes 1 ".$this->getUploadRootDir()."/thumb_".$output;

07-24 09:44