python使用opencv低延迟拉取rtsp流

这篇具有很好参考价值的文章主要介绍了python使用opencv低延迟拉取rtsp流。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

传统方式

import cv2

url = "rtsp://**********************"

cap = cv2.VideoCapture(url)
while True:
    ret, frame = cap.read()
    cv2.imshow("frame", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

这种方式比较简单,但是拉取的视频流会有1s左右的延迟

GSTREAMER的方式进行拉流

安装依赖

# 安装gstreamer的依赖包
sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio -y
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev -y
# 更新python相关依赖
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade setuptools
python3 -m pip install --upgrade wheel
# 这一步很重要,如果不安装,会导致opencv源码编译中出现问题
python3 -m pip install numpy
# 拉取opencv源码,github中的比较卡,可以使用下面的gitee的同步源
git clone https://gitee.com/luzhipeng0728/opencv.git
# 进入opencv库
cd opencv/
# 这里我们使用的是opencv 4.4.0的版本,如果有特殊需要可以使用其它版本
git checkout 4.4.0
# 开始进行编译,期间要确保python3的版本,默认Python3位3.6.9如果需要安装到python3.8中需要自行切换默认python
mkdir build
cd build/
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D PYTHON_EXECUTABLE=$(which python3) \
-D BUILD_opencv_python2=OFF \
-D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") \
-D PYTHON3_EXECUTABLE=$(which python3) \
-D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
-D WITH_GSTREAMER=ON \
-D BUILD_opencv_python3=yes \
-D BUILD_EXAMPLES=ON \
..

cmake执行完成后需要注意下面

python使用opencv低延迟拉取rtsp流

 需要注意上面的两个划红线的地方,GStreamer需要为YES,编译时候,才能将gstreamer编译到opencv中去,python3下面的四行内容要完整才能保证opencv编译到python3的opencv中去

如果有问题,可以去看下上面的脚本中的依赖是否有安装失败的

如果之前已经安装过opencv的话需要将原来直接pip安装的opencv卸载掉

python3 -m pip uninstall opencv-python

下面执行编译

# 编译
sudo make -j$(nproc)
# 执行安装
sudo make install
# 更新config
sudo ldconfig
# 使用下面的执行查看,看到的应该和上面截图中cmake显示的一样,如果GStreamer为YES,则说明编译成功了
python3 -c "import cv2; print(cv2.getBuildInformation())"

如果上面步骤都正常通过了,下面我们来执行测试代码,查看使用gstreamer的视频进行拉流,延迟为多少

import cv2
image_width = 1920
image_height = 1080
rtsp_latency = 10
uri = "rtsp://admin:123456@192.168.3.64:554/Streaming/Channels/1"
gst_str = ("rtspsrc location={} latency={} ! rtph264depay ! avdec_h264 ! videorate ! videoconvert ! appsink sync=false").format(uri, rtsp_latency)
print(f'use gstream {gst_str}')
cap = cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)
while True:
    ret, frame = cap.read()
    cv2.imshow("frame", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

python使用opencv低延迟拉取rtsp流

可以看到上面的延迟只有0.4s左右 文章来源地址https://www.toymoban.com/news/detail-501908.html

到了这里,关于python使用opencv低延迟拉取rtsp流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python+opencv读取rtsp流

    在使用yolov5做物体检测中,需要拉取视频流。分解任务第一步则是需要使用opencv读取rtsp流,只要拿到每一帧图片在进行推理显示即可。

    2024年02月09日
    浏览(33)
  • 如何降低海康、大华等网络摄像头调用的高延迟问题(一):海康威视网络摄像头的python sdk使用(opencv读取sdk流)

    目录 1.python sdk使用 1.海康SDK下载  2.opencv读取sdk流  先说效果,我是用的AI推理的实时流,延迟从高达7秒降到小于1秒 如果觉得这个延迟还不能接受,下一章,给大家介绍点上不得台面的小方法 SDK(Software Development Kit)是软件开发工具包的缩写,它是一组用于开发特定软件或

    2024年02月07日
    浏览(90)
  • 消除Python OpenCV显示摄像头画面的延迟

    用 Python 通过 OpenCV显示摄像头画面时,如果对视频帧进行一些处理,常常会遇到一个问题,显示的画面比眼睛看到真实场景慢几秒甚至更多,给用户的体验不好。 画面延迟与卡顿的区别 卡顿 是指视频播放时,出现一顿一顿的现象,不流畅,通常每秒播放速率少于10帧就可以

    2024年02月11日
    浏览(53)
  • 跨平台低延迟RTSP转RTMP推送技术方案探讨

    实现RTSP摄像头数据转RTMP推送到服务器,可以用第三方库或者工具实现,总体设计架构如下:   一个好的转发模块,首先要低延迟!其次足够稳定、灵活、有状态反馈机制、资源占用低,跨平台,最好以接口形式提供,便于第三方系统集成,整体功能设计如下: 1. 拉流: 通

    2024年02月13日
    浏览(57)
  • Python+OpenCV+paddleocr基于传统图像处理技术实现车牌识别

    目录 一、前言 二、预处理-提取车牌         1. 转灰度图         2. 顶帽运算         3. Sobel算子提取y方向边缘         4. 自适应二值化         5. 开运算分割(纵向去噪,分隔)         6. 闭运算合并         7. 膨胀/腐蚀         8. 腐蚀

    2024年02月04日
    浏览(49)
  • Unity下如何实现低延迟的全景RTMP|RTSP流渲染

    Unity3D可以用于创建各种类型的的应用程序,包括虚拟现实、培训模拟器等。以下是一些可以使用Unity3D全景播放的场景: 虚拟现实体验:全景视频可以用来创建逼真的虚拟环境,使用户能够感受到身临其境的感觉; 培训模拟器:全景视频可以用来创建真实的训练环境,例如飞

    2024年02月15日
    浏览(34)
  • RK3399 ,播放RTSP流,使用QMediaPlayer,不使用FFMpeg方式

    rk3399 想要拉RTSP流并显示共有俩种显示方式 其中rk3399拥有mpp硬件解码器,能够解h264与h265码流 第一种方式为 FFmpeg+qt+MPP,方式进行解码 此种解码方式,前面的文章有阐述过,在此就不再过多阐述了 第二种方式是利用qt中的qMediaplayer方式进行播放,Qmediaplayer,自己并无解码器,

    2023年04月18日
    浏览(33)
  • 海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储

    文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131679108 上一篇:没有了 下一篇:敬请期待…   Hik防爆摄像头录像,因为防爆摄像头会有对应的APP软件,与普通的网络摄像头和球机不一样,默认认为它不可以通过web网页配置,所以弄

    2024年02月16日
    浏览(41)
  • cv2.VideoCapture拉取rtsp流超时问题

    在python中,使用cv2拉去rtsp视频流时,如果rtsp流异常,不管是cv2.VideoCapture()或者VideoCapture().read()都可能长时间阻塞(很多人说默认超时30s),而且找不到设置超时设定的地方,尝试过使用线程处理,但实际使用比较玛法麻烦,在stackoverflow.找到解决方法:

    2024年02月16日
    浏览(38)
  • 如何在VR头显端实现低延迟的RTSP或RTMP播放

    技术背景 VR(虚拟现实技术)给我们带来身临其境的视觉体验,广泛的应用于城市规划、教育培训、工业仿真、房地产、水利电力、室内设计、文旅、军事等众多领域,常用的行业比如: 教育行业:VR头显可以用于教育培训,提供沉浸式的教学体验,例如虚拟实验室、虚拟课

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包