Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ffmpeg生成具有纵横比的缩略图,但在视频中为X秒_Php_Ffmpeg - Fatal编程技术网

Php ffmpeg生成具有纵横比的缩略图,但在视频中为X秒

Php ffmpeg生成具有纵横比的缩略图,但在视频中为X秒,php,ffmpeg,Php,Ffmpeg,因此,此命令用于在视频中生成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

因此,此命令用于在视频中生成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;

@alexbuisson给出了正确的答案,但我只是想确认一下,因为我今天正在玩ffmpeg:

这对我很有用:

ffmpeg -i "my_video.mp4" -ss 00:00:05 -f image2 -vf scale="min(300\, iw):-1" -vframes 1 "capture.jpg"
我得到一个Jpeg 300像素宽的正确的图像比例

因此,根据您的代码,这将成为:

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

难道你没有忘记
-filter:v
之前的
比例
?@slhck是的,你应该把它作为答案发布。