ffmpeg移走零件不动


15

我有一个IP安全摄像机(192.168.0.8),它可以通过网络广播rtsp内容。

我可以使用计算机上的下一个ffmpeg命令保存该(RAW)内容,而无需进行更改:

ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -acodec copy -vcodec copy test-raw.mp4

我还可以即时调整其大小:

ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -vf  "scale=640:-1" test640.mp4

但是,如何仅保存仅包含运动检测部分的视频呢?

我试图使用ffmpeg的场景更改过滤器解决它,但是没有运气。

我的目标-拥有通用的视频监控解决方案,该解决方案可以检测到有人何时在相机附近移动并将其保存到视频文件中。我了解可能无法从流中即时进行,因此我可以先保存大文件,然后使用另一个ffmpeg命令处理它并生成仅包含运动检测部分的新视频文件,这是可以的。如果您能给我建议,我应该进一步研究什么,我将非常感激。

我的相机流没有声音传输。因此,我可以从原始视频生成一组图像,然后选择适当的图像,然后从图像中保存新视频。


您是要实施此系统还是要找到可用的产品?
Woeitg

@WOEITG我只需要Ubuntu 15.04+的任何免费工作解决方案
rfedorov

对于Windows,有一个名为ispy的软件,您可以将其设置为在运动检测时进行记录。由于您需要Linux解决方案,因此zoneminder.com应该是类似的产品。不幸的是,我没有直接回答您的问题,而是+1,因为我也
想得到

Answers:


7

我要做的就是按照您所说的做,并保存流的一个大文件,然后将select FFMPEG过滤器scene表达式进行比较,例如,比较连续帧的相似性 select=gt(scene\,0.003)。数值越大,帧之间的变化被忽略的越多,在快速测试中,根据您要处理的素材类型,您可能需要降低至0.00001-0.00005。

将其与setpts filter结合使用,可以修改视频帧的“开始时间”,最终会得到类似的结果(对于25fps的视频):

ffmpeg -i input.mp4 -vf "select=gt(scene\,0.003),setpts=N/(25*TB)" output.mp4

请注意,-vcodec copy使用视频过滤器时将无法使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.