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 代码才能正常读取。
相关推荐
计算机毕业编程指导师8 分钟前
【Python毕设选题推荐】基于Hadoop+Django的奥斯卡奖获奖数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·毕业设计·课程设计·奥斯卡奖
风早爽太10 分钟前
Python 学习笔记:数据库迁移工具 ‌Alembic
数据库·python·fastapi·alembic
91刘仁德10 分钟前
传输层协议深度拆解:端口寻址、UDP 报文与 TCP 可靠性机制全解析
linux·网络·c++·网络协议·tcp/ip·udp·c
Code_Solitude11 分钟前
开发板点灯实验源码
stm32·单片机·嵌入式硬件
傲世仙尊12 分钟前
TCP报头全解-序号确认应答与可靠性是一个准数
驱动开发·网络协议·tcp/ip
外收内放13 分钟前
06 | 优化篇① 游戏改名《鳞光纪》了:这次翻新,把“脸“全换了
python·游戏·pygame
计算机毕业编程指导师16 分钟前
【大数据毕设选题】基于Spark的电信网络诈骗话术语义特征挖掘分析系统源码 毕业设计 选题推荐 数据分析 机器学习 深度学习
大数据·hadoop·python·spark·毕业设计·课程设计·网络诈骗
AIgorithmGEEK18 分钟前
[Linux]HTTP 应用层协议全解(中篇)
linux·网络·网络协议·http
ai_xiaogui19 分钟前
PanelAI 1.1.1重磅更新:秒级安装脚本优化 + 无公网IP算力节点组网,私有化AI管理平台全面升级
人工智能·网络协议·tcp/ip·api聚合管理·开发者ai一键部署·ai底层架构解析·ai应用快速变现
for_ever_love__20 分钟前
电商订单数据清洗实战——Pandas 处理缺失值、重复单与异常金额
python·数据分析·pandas·数据清洗