2016-11-19 350 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