• RTSP协议进行视频取流的方法、注意点及python实现


    在视频应用中,我们一般都需要基于摄像头或录像机的视频流进行二次开发,那么就涉及到如何将视频流取出来。

    在摄像机安装好之后,一般是通过局域网与本地的服务器进行连接,要取录像机的视频流就要在局域网范围内进行操作。

    步骤:

    1)获取摄像机的IP地址、配置的用户名和密码,按照格式写出RTSP协议地址码

    2)用VLC工具连接,测试是否可以取出视频流

    3)python中通过opencv读取视频流

    详细说明:

    1)摄像机的IP地址、配置的用户名和密码是已知的参数,在安装的时候即已配置好。RTSP协议地址码根据所用摄像机的型号来定,以海康摄像头为例(来自于海康的客服):

    目前海康录像机、网络摄像机,网络球机的RTSP单播取流格式如下(车载录像机不支持RTSP取流):

    rtsp://用户名:密码@IP:554/Streaming/Channels/101

    录像机示例:

    取第1个通道的主码流预览

    rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/101

    取第1个通道的子码流预览

    rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/102

    取第1个通道的第三码流预览

    rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/103

    取第12个通道的主码流预览

    rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/1201

    网络摄像机/网络球机示例:

    取主码流的URL:

    rtsp://admin:hik123456@192.168.1.64:554/Streaming/Channels/101

     如果是多播取流的话,则使用以下路径

    rtsp://用户名:密码@IP:554/Streaming/Channels/101?transportmode=unicast

    录像机示例:

    取第1个通道的主码流预览

    rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/101?transportmode=unicast

    2)我一般先用VLC工具测试是否可以取出视频流,当然这一步不是必须的。

    点击 媒体-->打开网络串流-->输入RTSP地址码

    如果能将实时的视频画面取出来,就表明RTSP协议地址码是正确的。

    3)用python代码进行取流

    代码如下:

    import cv2
    
    cap = cv2.VideoCapture('你的RTSP协议地址码')
    
    print(cap)
    ret,frame = cap.read()
    while ret:
        ret,frame = cap.read()
        cv2.imshow("current frame",frame)
        cv2.imwrite('frame.jpg', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cv2.destroyAllWindows()
    cap.release()
    

    最后在此基础上进行python的二次开发。

  • 相关阅读:
    Python
    Python
    Python
    Flask
    记一次Orika使用不当导致的内存溢出
    SpringBoot博客开发之AOP日志处理
    SpringBoot数据访问之整合mybatis注解版
    Blazor WebAssembly 应用程序中进行 HTTP 请求
    Blazor Server 应用程序中进行 HTTP 请求
    MySQL数据库主从数据对比
  • 原文地址:https://www.cnblogs.com/taotingz/p/12582815.html
Copyright © 2020-2023  润新知