2016-11-19 70 views
2

我試圖測量電影有多快「快」(在屏幕和快速場景中有更多動作機會)。我不想爲電影設定一個單一的值,而是沿着電影值來查看電影中的動作是如何變化的。在規格化電影的幀速率(10 fps)之後,我的想法是將每一幀與前一幀進行比較。如果現場發生了變化,我不僅感興趣,而且如果沒有減少,那麼有多少移動。不僅人/物體移動而且相機移動。總結節奏(我認爲這個詞)的場景。FFMPEG:獲取所有幀的場景變化檢測值

我的想法是使用ffmpeg中的scene函數作爲度量標準。但看看documentexamples online我想我只能使用場景變化檢測的值作爲返回幀信息的閾值,但我無法獲得ffmpeg來返回值。是對的嗎?有什麼辦法可以讓它恢復價值?

回答

4

使用

ffmpeg -i in.mp4 -vf select='gte(scene,0)',metadata=print:file=scenescores.txt -an -f null - 

創建將輸出這樣的文本文件:

... 
frame:1440 pts:737280 pts_time:48  
lavfi.scene_score=0.003069 
frame:1441 pts:737792 pts_time:48.0333 
lavfi.scene_score=0.001593 
frame:1442 pts:738304 pts_time:48.0667 
lavfi.scene_score=0.000077 
frame:1443 pts:738816 pts_time:48.1 
lavfi.scene_score=0.002219 
... 
+0

它返回'[AVFilterGraph @ 0x12856e0]沒有這樣的過濾器:「metadata''和'錯誤打開過濾器! '。任何想法爲什麼? – celacanto

+1

該過濾器已於2016年2月添加。您需要更新版本的二進制文件。 – Mulvya

+0

謝謝,它的工作。其他人也知道。我用'apt get'安裝了ffmpeg。爲了獲得最新版本,我遵循[這個步驟](https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu) – celacanto