【opencv实战】海康摄像rtsp流不同方案下的时延测试(Ing)

测试摄像头型号:海康威视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

  • 18
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值