从海康摄像机上读取RTSP视频流并存储当前帧到本地

简介: 从海康摄像机上读取RTSP视频流并存储当前帧到本地

整体流程:


1.1 从数据库中获取相机编码


1.2 结合海康平台的AK\SK以及发布的轮子接口获取相机的RTSP


1.3 使用Opencv-Python读取RTSP并存储图像\



模块一:从数据库中获取相机编码


1.1 连接数据库(连接名称、用户名、密码、端口、数据库名称、字符编码、生成游标对象)


1.2 执行Sql语句

import pymysql
class BaseSetMySql():
    # 连接数据库基础参数
    def __init__(self):
        # 连接数据库
        self.conn = pymysql.connect(host='192.168.32.22'  # 连接名称,默认127.0.0.1
                                    , user='root'  ## 用户名
                                    , passwd='root'  # 密码
                                    , port=3306  # 端口,默认为3306
                                    , db='AllIndexcode'  # 数据库名称
                                    , charset='utf8'  # 字符编码
                                    )
        self.cur = self.conn.cursor()  # 生成游标对象
        # Sql语句
        self.Sql = 'SELECT indexcode FROM `cameraid`'  # 查询企业摄像机编码的SQL
    # 获取摄像机编码
    def GetCamID(self):
        try:
            self.cur.execute(self.Sql)  # 执行插入的sql语句
            CamID = self.cur.fetchall()
            return CamID
        except:
            self.conn.commit()  # 提交到数据库执


模块二:根据相机编码获取RTSP


2.1 将获取到的相机ID对海康接口发送POST请求


2.2 筛选海康返回参数中含有RTSP的数据


2.3 这部分的改进可以参考:juejin.cn/post/707626… 这里是关于返回RTSP参数的各种情况


import requests
class BaseSetRTSP():
    def __init__(self):
        # 接口
        self.UrlCode = 'http://xxx.x.xxx.xxx:xxxx/xxxxxxxxx/xxxxxxxxxx'
    # 获取企业的RTSP
    def GetRTSP(self,CamId)
        RestInfo = self.UrlCode + CamId
        RestData = requests.get(RestInfo)
        RestDataDict = RestData.json()
        RTSP = None
        RightInfo = "rtsp" in str(RestDataDict)
        if RightInfo is True:
            Data_RestDataDict = ((eval(RestDataDict['data']))['data'])
            RTSP = Data_RestDataDict['url']
        return RTSP


模块三:使用Opencv-Python读取RTSP并存储图像


3.1 需要判定在RTSP模块中获取RTSP是否为None,只有不为None的才会有RTSP 3.2 图像命名采用UUID各种命名避免重复 3.3 这个里面涉及到了一个RTSP连接超时和掉帧现象

import uuid
import cv2
class SaveFrame():
    def __init__(self):
        pass
    # 存视频图像
    def SaveFrame(self, CAMID, RTSP):
        if RTSP is not None:
            VideoCap = cv2.VideoCapture(RTSP)
            ret, frame = VideoCap.read()
            if ret:
                FrameName = "_" + str(CAMID) + "_" + str(uuid.uuid1())
                cv2.imwrite('D:/Pecker/imgs/%s.jpg' % FrameName, frame)
                print("成功截图", FrameName)
            VideoCap.release()




相关文章
|
Ubuntu Linux 网络安全
RK3588 开发板上根文件系统导出并制作img镜像
RK3588 开发板上根文件系统导出并制作img镜像
5606 1
|
编解码 算法 Ubuntu
Gstreamer 硬解码Rtsp流及代码实现
Gstreamer 硬解码Rtsp流及代码实现
|
机器学习/深度学习 算法 计算机视觉
yolov8人脸识别-脸部关键点检测(代码+原理)
yolov8人脸识别-脸部关键点检测(代码+原理)
|
编解码 数据安全/隐私保护 计算机视觉
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
如何使用OpenCV进行同步和异步操作来打开海康摄像头,并提供了相关的代码示例。
1395 1
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
|
11月前
|
人工智能 数据可视化 安全
【保姆级教程】Dify+DeepSeek+MCP三件套:零门槛打造AI应用流水线,手把手实战教学!
本教程手把手教你用Dify+DeepSeek+MCP三件套零门槛搭建AI应用流水线:Dify提供可视化工作流编排,DeepSeek贡献128K长文本国产最强模型,MCP实现弹性部署。这套组合兼具低代码开发、高性能推理和灵活运维三大优势,助你快速落地企业级AI解决方案。
|
人工智能 监控 算法
Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接
本文深入解析了基于Python实现的RTSP/RTMP播放器,探讨其代码结构、实现原理及优化策略。播放器通过大牛直播SDK提供的接口,支持低延迟播放,适用于实时监控、视频会议和智能分析等场景。文章详细介绍了播放控制、硬件解码、录像与截图功能,并分析了回调机制和UI设计。此外,还讨论了性能优化方法(如硬件加速、异步处理)和功能扩展(如音量调节、多格式支持)。针对AI视觉算法对接,文章提供了YUV/RGB数据处理示例,便于开发者在Python环境下进行算法集成。最终,播放器凭借低延迟、高兼容性和灵活扩展性,为实时交互场景提供了高效解决方案。
1091 5
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
1864 0
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
7178 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
4721 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
存储 编解码 缓存
海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储
Hik防爆摄像头录像,因为防爆摄像头会有对应的APP软件,与普通的网络摄像头和球机不一样,默认认为它不可以通过web网页配置,所以弄了个来实测确认。经测试实际上也是可以通过web网页配置(与网络摄像头基本是一致的,在码流方面可能会有些不一样),然后提取rtsp流的,界面与球机无异,只是没有球机的云台控制功能,但是界面上也是有的。
海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储