2013-08-20 36 views
2

所以此命令適用於生成縮略圖5秒到視頻,大小爲300×300:ffmpeg的生成與縱橫比的縮略圖,但X秒到視頻

$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秒任何幫助將是很大。讚賞。

+1

你沒忘了'-filter:'scale'前v'? – slhck

+1

@slhck是的,你應該把它作爲答案。 –

回答

6

你可以做到這一點與類似的命令行:規模前

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

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