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 代码才能正常读取。
相关推荐
happylifetree5 小时前
Python70:核心语法-函数进阶-案例2
python
irislinAmelia5 小时前
缺陷检测AI关键点在哪
人工智能·嵌入式硬件·1024程序员节
王中阳Go5 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
BK贝壳5 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
砺星Leetx6 小时前
工业总线选型与对接实战:PROFINET、EtherCAT、EtherNet/IP、PROFIBUS、Modbus-TCP 与 CC-Link
网络·网络协议·tcp/ip·控制器·国产拧紧系统
Sakura_j_h_6 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
糖糖单片机设计6 小时前
基于 STM32 的植物生长环境监控系统
stm32·单片机·嵌入式硬件
创界工坊工作室6 小时前
56-基于STC89C52的智能声控饮水机设计
stm32·单片机·嵌入式硬件·51单片机·proteus
hkj88087 小时前
stm32 ADC DMA 循环模式配合双缓冲分块(Ping-Pong)
stm32·单片机·嵌入式硬件
supabc1237 小时前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节