从这个答案我正在使用此命令仅提取(大部分不变的)视频源中包含运动的组件:
ffmpeg -i input.mp4 -vf "select=gt(scene\,0.0001),setpts=N/(25*TB)" output.mp4
然而,我发现在某些(例如较低的)光照条件下,尽管视频中似乎没有发生任何事情,但我开始看到很多帧捕获。在这些条件下似乎确实有很多噪音,我认为这是导致总变化量超过阈值的原因。事实上,如果我将阈值加倍,大部分噪音都会消失 - 但仍然不是全部。但是,如果我进一步提高阈值,我将开始错过我不想错过的实际小动作。
我的想法是,如果滤镜首先做一些事情来减少场景中的噪音,比如在 2-3 像素的分辨率下进行某种轻微的模糊处理,这将消除虚假的运动检测,我可以在较小的范围内检测到实际的运动。我看到了一些模糊选项,但选择过滤器没有谈论如何间接使用它们,即我不希望实际输出受到影响,只希望场景检测受到影响。
答案1
在滤波器链中进行选择之前,您是否尝试过实际的去噪滤波器?
就像是ffmpeg -i input.mp4 -vf "vaguedenoiser=PARAMS,select=gt(scene\,0.0001),setpts=N/(25*TB)" output.mp4
?
搜索denoise
https://ffmpeg.org/ffmpeg-filters.html#vaguedenoiser对于其他一些人来说。