问题描述
我在我的项目中使用带有yolov3和darknet的openCV库。我的应用程序是用C ++编写的,它读取rtsp流并在该流中寻找人。我在Nvidia Jetson Nano上运行它,一切都很好,但是有一个小问题。我在视频分析方面有明显的延迟。当我运行它并出现在相机查看区域时,我可以看到约20秒的延迟。
我正在分析子流(720p 2fps),但是在识别时,我想捕获主流的正确识别时刻(1080p 15fps),我使用ffmpg进行记录。为此,我需要(1)在识别时没有延迟,或者(2)在识别期间测量此延迟,以定义我需要捕获的主视频的哪一秒。 我想(1)是不可能的。
您知道openCV是否可以显示此延迟吗?我该如何测量?
p.s。此延迟并不总是相同的。但我注意到这是10到20秒,
非常感谢您的帮助;)
解决方法
由于fps和流通道不同,因此很难同步流。另一个问题是rtsp流,openCV可能会跳过很多由bootleneck引起的帧,而您无法将它们退回。
如果您在哪里找到靴子,您可能会找到答案。可能是深度学习算法,因此大部分的gpu / cpu时间都在检测算法中。
我要做的是:忽略第二个流,将代码集中在主流上,在缓冲区上添加一些帧,然后检测是否达到了极限,然后遍历该缓冲区以保存所需的内容。 / p>
ps:由于将缓冲区保存在磁盘上所需的时间,因此可能导致问题。 (也许为此创建一个线程会有所帮助)