【opencv实战】海康摄像rtsp流不同方案下的时延测试(Ing)
opencv
OpenCV: 开源计算机视觉库
项目地址:https://gitcode.com/gh_mirrors/opencv31/opencv
免费下载资源
·
测试摄像头型号:海康威视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 天前
更多推荐
已为社区贡献6条内容
所有评论(0)