Onvif/RTSP流媒体服务-RTSP配置规则

长孙兴德
2023-12-01

LiveNVR搭建无插件直播方案时,采用行业标准的通用协议RTSP/Onvif接入摄像机IPC摄像机 / NVR硬盘录像机设备;Onvif是摄像机的发现与控制管理协议,Onvif用到的流媒体协议也是RTSP,在摄像机NVR流媒体接入上,就是直接采用统一的RTSP协议接入;

在RTSP协议上,由于各个厂家都有不同的处理方法,比如:海康、大华、雄迈、宇视、天地伟业等厂家的RTSP地址规则有所区别。

RTSP配置规则

大华产品 rtsp://username:password@ip:port/cam/realmonitor?channel=1&subtype=0

  • username: 用户名
  • password: 密码
  • ip: 为设备IP
  • port: 端口号默认为554,默认554时可不填写
  • channel: 通道号,起始为1。例如通道2,则为channel=2
  • subtype: 码流类型,主码流(subtype=0),辅码流(subtype=1)

示例: rtsp://admin:admin@127.0.0.1:554/camera/monitor?channel=1&subtype=1

海康-预览取流-旧版规则(2012年之前的设备只持旧版规则) rtsp://<username>:<password>@<ipaddress>:<port>/<videotype>/ch<id>/<streamtype>/av_stream

  • username: 用户名
  • password: 密码
  • ipaddress: 设备IP
  • port: 端口号默认为554,默认可不填写
  • videotype:视频编码格式,如:h264、mpeg4
  • ch: 通道号,起始为1。例如通道1,则为ch1
  • streamtype: 码流类型,主码流(main),辅码流(sub)

示例: rtsp://admin:admin@127.0.0.1:554/h264/ch1/main/av_stream
示例: rtsp://admin:admin@127.0.0.1:554/mpeg4/ch2/sub/av_stream

海康-预览取流-新版规则 rtsp://<username>:<password>@<ipaddress>:<port>/Streaming/Channels/<id>(?parm1=value1&parm2=value2)

  • username: 用户名
  • password: 密码
  • ipaddress: 设备IP
  • port: 端口号默认为554,默认可不填写
  • id:通道号+0+码流类型 码流类型:1-主码流、2-子码流、3-第三码流;如 1202 表示第12通道子码流
  • parms 其他入参 如 transportmode=unicast (默认单播)transportmode=multicast (多播)

示例:rtsp://admin:admin@127.0.0.1:554/Streaming/Channels/101

海康-回放取流 rtsp://<username>:<password>@<ipaddress>:<port>/Streaming/tracks/<id>(?parm1=value1&parm2=value2)

  • username: 用户名
  • password: 密码
  • ipaddress: 设备IP
  • port: 端口号默认为554,默认可不填写
  • id:通道号+0+码流类型 码流类型:1-主码流、2-子码流、3-第三码流;如 1202 表示第12通道子码流
  • parms 其他入参 如 starttime=20131013t093812z&endtime=20131013t104816z ;具体格式是YYYYMMDD”T”HHmmSS.fraction”Z”,Y是年,M是月,D是日,T是时间分格符,H是小时,M是分,S是秒,Z是可选的、表示Zulu(GMT) 时间

示例:rtsp://admin:admin@127.0.0.1:554/Streaming/tracks/101?starttime=20180902t123812z&endtime=20180902t124816z

OPTIONS发送的问题

RTSP接入方面,live555和ffmpeg,是市面上兼容性最强的两个组件,各有长短,live555结构复杂、ffmpeg整体庞大;以live555作为摄像机RTSP接入的方案,能非常方便实现部分功能的定制,也会遇到OPTIONS发送的问题:

当采用RTP over UDP/TCP方式在取流的过程中,RTSPClient(live555)可能长时间都在从RTSPServer(IPC/NVR)取流,但缺没有向RTSPServer发送保活报文,如果服务器端启动了Session保活检测机制(参看live555中RTSPServer中noteliveness实现),服务器端长时间没有收到客户端发送的数据包,就会认为客户端连接是假连接,主动断开与客户端的连接(不管客户端是否正在取流);

为了解决上述的问题,大部分的RTSPClient客户端都会定时(例如30s)向RTSPServer发送OPTIONS(有的也有可能发送的是GET_PARAMETER)命令,类似于保活报文,这样服务器端就能正常地发送直播数据流了;

并不是所有的RTSPServer都做的那么好,就比如海康的某些IPC/NVR型号,当RTSPClient在拉流的过程中,突然发送OPTIONS保活报文,就像是发送了一个垃圾数据一样,RTSPServer自动就将整条RTSP连接断开了,导致RTP取流也随着停止了,我们只能在这类设备中,选择不发送OPTIONS保活包;

LiveNVR 安防RTSP无插件直播方案

LiveNVR解决了上述各种问题,是一个传统安防互联网化的解决方案:

  • 支持PC端/Android安卓端/iOS苹果端/微信端无插件化观看;
  • 支持微信扫描二维码观看;
  • 基于web网页/无插件播放;
  • 支持海康/大华等市面上几乎全部的网络摄像机接入;
  • 实时IP Camera/NVR直播画面实时直播监控;
  • 支持录像及录像回看;
  • 兼容windows和linux双系统;
  • 私有云部署搭建自己的业务场景;
 类似资料: