从文件中删除运动事件

从文件中删除运动事件

我正在做一个延时摄影项目,目前有几个长视频,其中有些部分什么都没有发生,我想知道是否有一个程序可以删除所有这些部分或删除所有运动部分并放入一个文件中,而不是我花几个小时播放并手动剪切它们。

我读过 vlc 可以在播放中检测运动,但不确定如何使用它。这可以是适用于 Windows 或 Linux 的解决方案。

答案1

我一直在对过滤器进行一些ffmpeg实验mpdecimate

输出是仅包含“活动”部分的视频,并且我使用了一些 FPS 技巧。

输出将以 25fps 的速度在播放器上播放,但实际上将以 5fps 播放(调整两个setpts和第一个fps过滤器中的数字 5 来调整速度)。如果 25fps 对您来说合适(我的测试视频显示变化对我来说太快了),请删除最后一个过滤器并改用-map [c]

如果需要调整阈值,请查看这里: (Fe: mpdecimate=hi=64*12:lo=64*8:frac=0.33

mpdecimate会丢帧,但长度保持不变。setpts你强制它计算每个帧的固定持续时间,第一个fps让它与定义的“当前”速度相匹配setpts。最后fps让它“可播放”(插入重复帧以填充 25fps 视频),(我的 VLC 上的 5fps 视频播放效果不佳,时不时会冻结)

ffmpeg -y -i input.mp4 -filter_complex "[0:v] mpdecimate [a] ; [a] setpts='N/(5*TB)' [b] ; [b] fps=5 [c] ; [c] fps=25 [d]" -map "[d]" -c:v libx264 ouput.mp4

相关内容