测试摄像头型号:海康威视DS-2CD2T26FWD-i5s中的6mm/12mm 相机

测试方式:rtsp流

1. VLC

(1). vlc 直接播放 rtsp 流

这个延迟不得了,大概有2s。

(2). vlc 关闭缓存 

因为 vlc 播放器默认有个网络缓存时间,我查看了一下我的设置里面的是1000ms,调整了一下这个时间,重新测试一下。

vlc rtsp://192.168.1.64:554 --network-caching=100 #我改成了100ms

延迟<1s,我看了一下大概300ms 的样子。

2. 海康SDK

海康sdk延迟基本200ms的样子,但是只支持x86平台,Arm架构暂时没有sdk,这个我直接咨询了官方。

这个延迟是我测得的最低的,如果对延迟敏感果断使用海康 SDK吧!

3. OpenCV(cpu)

#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/imgproc/imgproc.hpp>  
#include <iostream>  
#include <stdio.h>  
#include <string>

int main(int argc, char** argv)
{
    std::string url="rtsp://admin:abcd1234@192.168.1.64:554";
    cv::VideoCapture cap(url);
    if (!cap.isOpened()) {
		std::cout << "captureOpen failed!" << std::endl;
	} else {
	    std::cout << "success!" << std::endl;
	}
    cap.set(cv::CAP_PROP_BUFFERSIZE,0);

	cv::Mat frame;
	while (true)
	{
	    cap >> frame;
		cv::imshow("image", frame);
		if (cv::waitKey(1) > 0) {
			break;
		}
	}
    return 0;
}

opencv也是自带缓冲区的,如果你帧处理的速度跟不上会造成缓冲区帧积累,会导致延迟累积,上面这段代码直接将缓冲区size设置为0。

4. OpenCV(cuda)

5. OpenCV(Gstreamer+NVDEC)

这个我是在 Jetson agx xavier 平台上测试的,主要是想利用一下其自带的硬件解码功能,延迟大概是500ms 左右。

应该说这个延迟是不低的,但是你如果要接入多个流的化最好还是要用NVDEC解码,不然你的CPU会吃不消。尤其像

Xavier的CPU还是Arm v8。

6. ffplay(cuda)

(1). 直接播放

ffplay rtsp://admin:abc123456@192.168.1.64:554 #延迟1s

(2). 关闭缓存

ffplay -fflags nobuffer rtsp://admin:abc123456@192.168.1.64:554 #延迟300ms

GitHub 加速计划 / opencv31 / opencv
77.38 K
55.71 K
下载
OpenCV: 开源计算机视觉库
最近提交(Master分支:2 个月前 )
c3747a68 Added Universal Windows Package build to CI. 7 天前
9b635da5 - 7 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐