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

如何获取不同厂商及型号摄像头的RTSP子流地址?

获取任意型号摄像头RTSP子流路径的可行方案

一、ONVIF工具的进阶用法(解决你之前只拿到主流的问题)

大部分ONVIF客户端默认仅展示第一个Profile(对应主流),但实际上摄像头的ONVIF Media服务会返回所有流配置文件(Profile),每个Profile对应一个独立的流(主/子/第三流)。你需要遍历所有Profile来提取子流的RTSP地址:

Python库实现(onvif-zeep)

onvif-zeep是目前最稳定的ONVIF Python客户端库,直接调用GetProfiles接口获取所有流配置,再通过GetStreamUri获取对应RTSP地址:

from onvif import ONVIFCamera

def get_all_rtsp_streams(ip, port, user, password):
    # 初始化ONVIF连接
    cam = ONVIFCamera(ip, port, user, password)
    media_service = cam.create_media_service()
    
    # 获取所有流配置Profile
    profiles = media_service.GetProfiles()
    
    streams = []
    for idx, profile in enumerate(profiles):
        # 获取对应Profile的RTSP流地址
        stream_uri = media_service.GetStreamUri({
            'StreamSetup': {'Stream': 'RTP-Unicast', 'Transport': {'Protocol': 'RTSP'}},
            'ProfileToken': profile.token
        })
        streams.append({
            'stream_type': f'主/子流{idx+1}',
            'rtsp_url': stream_uri.Uri,
            'profile_token': profile.token
        })
    return streams

# 调用示例
streams = get_all_rtsp_streams("192.168.1.100", 80, "admin", "123456")
for stream in streams:
    print(f"{stream['stream_type']}: {stream['rtsp_url']}")

这段代码会返回摄像头所有可用的RTSP流,通常第一个是主流,后续的就是子流或其他附加流。

二、通用探测与规则匹配

如果摄像头不支持ONVIF,可尝试基于主流地址推导子流地址,不同厂商的子流命名有一定规律:

  • 海康威视:主流rtsp://user:pass@ip:554/h264/ch1/main/av_stream → 子流rtsp://user:pass@ip:554/h264/ch1/sub/av_stream
  • 大华:主流rtsp://user:pass@ip:554/cam/realmonitor?channel=1&subtype=0 → 子流修改subtype=1
  • 通用格式:将主流地址中的main替换为sub/substream,或添加/sub后缀,比如rtsp://ip:554/main → rtsp://ip:554/sub

可用ffmpeg快速验证地址是否有效:

ffmpeg -i rtsp://user:pass@ip:554/substream -vcodec copy -acodec copy -f null -

如果命令无报错,说明子流地址有效。

三、摄像头Web管理界面

几乎所有网络摄像头的Web后台都会在「视频设置」或「编码配置」页面直接显示主/子流的RTSP地址,这是最直接的方式:

  • 登录摄像头IP的Web管理页
  • 找到「编码设置」「流设置」板块
  • 查看「子流」对应的RTSP发布地址

四、厂商SDK调用

对于特定厂商的摄像头(如海康、大华),可使用官方提供的SDK直接获取子流地址:

  • 海康SDK:调用NET_DVR_GetRealPlayURL接口,指定子流通道参数
  • 大华SDK:调用CLIENT_GetRealPlayURL,设置子流类型标识

缺点是需要针对不同厂商适配代码,通用性差,但兼容性最好。

注意事项

  • 确保摄像头已开启子流功能:部分摄像头默认关闭子流,需在Web后台或ONVIF配置中启用
  • ONVIF兼容性:部分小众品牌摄像头可能仅部分支持ONVIF,需确认摄像头的ONVIF版本
  • 认证权限:部分摄像头需要管理员权限才能获取流地址,普通用户可能无法访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:32:43