Python 读取 IP 视频流简单 Demo

宝华视联 RTSP 格式:

rtsp://用户名:密码@IP:554/stream

部分设备路径:rtsp://user:pwd@192.168.x.x:554/live

1. 安装依赖

pip install opencv-python

Demo1:最简读取并显示 IP 流

import cv2

========== 不同品牌摄像头RTSP地址示例 ==========

海康

ip_stream_url = "rtsp://admin:123456@192.168.1.100:554/Streaming/Channels/101"

大华# ip_stream_url = "rtsp://admin:123456@192.168.1.101:554/cam/realmonitor?channel=1&subtype=0"

宝华视联 【修改这里的账号、密码、IP】

ip_stream_url = "rtsp://admin:123456@192.168.1.102:554/stream"

创建视频捕获对象

cap = cv2.VideoCapture(ip_stream_url)

判断是否打开成功

if not cap.isOpened():

print("无法打开视频流,请检查地址、账号密码、网络")

exit()

while True:

ret, frame = cap.read()

if not ret:

print("读取帧失败,流断开")

break

显示画面

cv2.imshow("IP Camera", frame)

复制代码
# 按 q 退出窗口
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

释放资源

cap.release()

cv2.destroyAllWindows()

## 复制代码
import cv2
# 地址
ip_stream_url = "rtsp://admin:123456@192.168.1.102:554/stream"

cap = cv2.VideoCapture(ip_stream_url, cv2.CAP_FFMPEG)
# 设置缓冲区大小,越小延迟越低
cap.set(cv2.CAP_PROP_BUFFERSIZE, 2)
if not cap.isOpened():
    print("打开流失败")
    exit()
while True:
    ret, frame = cap.read()
    if not ret:
        print("帧读取失败")
        break
    cv2.imshow("Low delay IP Camera", frame)
    if cv2.waitKey(1) == ord("q"):
        break
cap.release()
cv2.destroyAllWindows()
```## Demo3:后台取帧无窗口版本
import cv2
ip_stream_url = "rtsp://admin:123456@192.168.1.102:554/stream"
cap = cv2.VideoCapture(ip_stream_url, cv2.CAP_FFMPEG)
cap.set(cv2.CAP_PROP_BUFFERSIZE,1)
if not cap.isOpened():
    print("流打开失败")
    exit()
count = 0
while True:
    ret, frame = cap.read()
    if not ret:
        break
    count += 1
    # 在这里做图像处理,如检测、保存图片
    if count %30 ==0:
        print(f"收到第{count}帧,图像shape:{frame.shape}")
cap.release()
## Demo4:带自动重连
import cv2
# RTSP地址
STREAM_URL = "rtsp://admin:123456@192.168.1.102:554/stream"
def create_capture():
    cap = cv2.VideoCapture(STREAM_URL, cv2.CAP_FFMPEG)
    cap.set(cv2.CAP_PROP_BUFFERSIZE,2)
    return cap
cap = create_capture()
while True:
    ret, frame = cap.read()
    if not ret:
        print("流断开,尝试重连...")
        cap.release()
        cap = create_capture()
        continue
    cv2.imshow("auto reconnect", frame)
    if cv2.waitKey(1) == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
### 常见地址备
如果上面`/stream`打不开,可以试下面路径:
rtsp://admin:123456@192.168.1.102:554/live
rtsp://admin:123456@192.168.1.102:554/rtsp
```> 
> 排查技巧:先用 VLC 播放器输入 rtsp 地址测试,VLC 能播放,Python 代码才能正常读取。
相关推荐
只睡四小时4 小时前
内网穿透+WebSocket:Node 零依赖远程桌面实战
网络·websocket·网络协议
ZLG_zhiyuan5 小时前
低空测试“升维”:ZUS系列示波器如何破解复杂信号的“测与析”难点?
单片机·嵌入式硬件
Jeremy_WW5 小时前
802.3协议解读 05:116章节 200 Gb/s 和 400 Gb/s 网络介绍 V
网络·网络协议·信息与通信·光模块·802.3协议
河北之花5 小时前
计算机三级:BGQ
网络·tcp/ip·计算机网络·智能路由器
宸津-代码粉碎机5 小时前
Spring AI 高危CVE漏洞深度复盘|生产禁跑版本汇总+临时防御+修复方案
java·大数据·人工智能·python·spring
词却5 小时前
OpenCV学习:dlib 人脸检测
人工智能·opencv·学习
承渊政道5 小时前
Python IDLE鸿蒙PC适配全记录:用 ArkUI 重建编辑、运行、Shell 与基础调试闭环
python·microsoft·harmonyos·鸿蒙系统·pc端
zjh9005305 小时前
Kotlin黑科技:空安全与Java兼容性深度解析
python
梦想平凡6 小时前
百游棋牌源代码开发搭建教程(七):WebSocket房间同步与断线恢复
网络·websocket·网络协议
..Dauntless..6 小时前
【stm32】GPIO(下篇)——统一编址、源码理解和输入模式
stm32·单片机·嵌入式硬件