2013-06-23 88 views
4

它可以在一行中運行cropdetect和crop並從視頻中獲取大拇指嗎?ffmpeg從cropdetect獲取價值

像這樣

ffmpeg -ss 1 -i 0.flv -vf cropdetect=24:16:0,crop=w:h:x:y -vcodec mjpeg -vframes 1 -an -f rawvideo -s 240x180 0.jpg 

或許需要在2線,第一次運行cropdetect,比運行農作物運行,並生成視頻縮略圖,但以這種方式,我需要從cropdetect值?

回答

11

cropdetect輸出到控制檯,這樣你就可以解析輸出,然後把它作爲一個變量:

ffmpeg -i input -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1 

這將導致類似:

crop=640:480:0:50 

然後運行您的實際產量命令:

ffmpeg -i input -vf $cropvalue,scale=240:-1 -vframes 1 -qscale:v 2 output.jpg 
  • -vcodec mjpeg,和-f rawvideo都是多餘

  • 使用-qscale:v控制JPG輸出品質。一個理智的範圍是2-5(較低的值是一個更高的質量)。

  • 使用scale過濾器代替-s;特別是如果你已經使用過濾器。此外,scale過濾器將允許您設置特定的寬度或高度,並與-1它會自動提供正確的值來保留方面。否則,如果你試圖強制一個特定的大小,你可能會冒一個壓扁或拉伸的輸出。

很明顯,我不是一個PHP編碼器,但這應該至少給你一個想法。

+0

嗯,不能得到在$ cropvalue作物價值......在PHP IM運行這段代碼,但是當在COMAND在線即時通訊IM運行獲得價值 –

+0

歐凱,即時發現解決方案..感謝反正 –

+0

我只是創建這樣 功能'function crop($ id){$ d = shell_exec(「ffmpeg -i $ id -t 1 -vframes 1 -ss 50 -vf cropdetect -f null - 2>&1 | awk'/ crop/{return $ NF} '| tail -1「); $ array = explode('crop =',$ d); $ cropvalue = $ array [1]; $ cropvalue ='crop ='。$ cropvalue; return $ cropvalue; }' and im im new call'crop(「111.mp4」)' –