You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python拉取TP-Link VIGI摄像头视频流失败,如何解决?

解决方案

  • 首先补全RTSP地址后缀
    TP-Link VIGI系列摄像头的RTSP流默认不支持根路径直接访问,需要附加对应的流路径参数,常见可用路径格式如下:
    主码流:rtsp://<用户名>:<密码>@<IP>:554/stream1
    子码流:rtsp://<用户名>:<密码>@<IP>:554/stream2
    部分型号需要附加通道标识:rtsp://<用户名>:<密码>@<IP>:554/ch01/stream1
    替换你的cv2.VideoCapture参数测试即可。

  • 通过ONVIF接口直接获取官方可用流地址
    你已经可以正常连接ONVIF服务,直接调用GetStreamUri接口即可拿到摄像头返回的合法拉流地址,参考代码:

from onvif import ONVIFCamera

# 初始化摄像头连接
mycam = ONVIFCamera('192.168.1.6', 80, 'admin', 'admin123')
media_service = mycam.create_media_service()
# 获取所有码流配置文件
profiles = media_service.GetProfiles()
# 拉取对应码流的RTSP地址,取第一个配置文件为主码流
req = media_service.create_type('GetStreamUri')
req.ProfileToken = profiles[0].token
req.StreamSetup = {
    'Stream': 'RTP-Unicast',
    'Transport': {'Protocol': 'RTSP'}
}
stream_uri = media_service.GetStreamUri(req)
# 打印出的地址直接用于OpenCV拉流即可
print("合法RTSP地址:", stream_uri.Uri)
  • 排查解码与传输兼容问题
  1. 确认你的OpenCV版本包含FFmpeg支持,运行print(cv2.getBuildInformation())查看FFmpeg字段状态为YES,否则卸载当前版本重新安装完整的opencv-python包
  2. 部分VIGI型号默认开启H.265编码,旧版OpenCV默认不支持该编码解码,可进入摄像头管理后台将视频编码切换为H.264,或安装对应H.265解码插件
  3. 若UDP传输不稳定可强制切换为TCP拉流,修改代码为:
import cv2
cap = cv2.VideoCapture("你的合法RTSP地址", cv2.CAP_FFMPEG)
# 强制使用TCP传输
cap.set(cv2.CAP_PROP_RTSP_TRANSPORT, cv2.CAP_FFMPEG_RTSP_TRANSPORT_TCP)
ret, frame = cap.read()

内容的提问来源于stack exchange,提问作者Abdelsalam Hamdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:30:00