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 代码才能正常读取。
相关推荐
门思科技1 小时前
LoRaWAN Regional Parameters:为什么 CN470 和 EU868 的频点数不同
python·物联网
恒锐丰科技韩生1 小时前
RB6005A|晶准 单节锂电池内置 MOS 保护芯片 DFN2×3‑8
嵌入式硬件·硬件工程
youshi66681 小时前
stm32-PWR、低功耗模式
stm32·单片机·嵌入式硬件
ACP广源盛139246256732 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 Serdes 长距离视频传输芯片 GSV5800 在私有化 AI 服务中的价值与应用场景
大数据·数据库·人工智能·嵌入式硬件·矩阵·开源·音视频
Joseph 乔2 小时前
【Python】卸载与重装
经验分享·python
归去来?2 小时前
Python 常用优雅写法
开发语言·python
Funing72 小时前
STM32 电机动态 PI 控制:从编码器反馈、增量式 PI 到 Matlab 参数拟合与 PWM 输出
stm32·嵌入式硬件·matlab·pi控制算法
名字还没想好☜2 小时前
Java 21 switch 模式匹配实战:sealed 接口 + record 替代 if-instanceof 链
java·人工智能·后端·python·spring
深蓝海拓2 小时前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(五)为当前动作画面的信号连接变量
网络·笔记·python·学习·pyqt