一、前期准备
首先,你需要清楚知道前端IPC的ip地址、Onvif协议监听的端口(一般都是80)以及用户名密码(一般为登录IPC的用户名密码,海康设备IPC需要登录IPC的web端在配置添加Onvif用户)。
其次你需要知道IPC请求的各个服务支持的协议地址如:http://192.168.35.123/onvif/device_service(默认80端口,同:http://192.168.35.123:80/onvif/device_service),一般需要知道Devicemgmt的地址就可以通过这个协议地址往下操作。
如果你不知道IPC的ip以及port等信息,那你就需要使用一些Onvif的测试工具如ONVIF Device Test Tool和ONVIF Device Manager通过Onvif的Discovery协议(广播发现)获取IPC的ip和port信息。
拿到这些信息后就可以开始向设备请求信息获取取流的RTSP地址。
目前一些需要的信令的Onvif官网地址:
http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl
https://www.onvif.org/ver20/media/wsdl/media.wsdl
二、信息获取
1、其他服务地址获取--------GetServices(推荐)或者GetCapabilities
该请求是获取各个服务的XAddr(如http://192.168.35.123/onvif/device_service)以及能力集。
取流过程通过该信令请求获取Media(如http://192.168.35.123/onvif/media_service)或者Media2(如http://192.168.35.123/onvif/media2_service)的服务地址。
2、设备的通道信息获取--------Media-GetProfiles(或者Media2-GetProfiles)
根据返回的信息记录保存ProfileToken。
里面重点的几个关键信息为VideoSourceConfiguration、VideoEncoderConfiguration。
VideoSourceConfiguration对应的是视频源配置,可以理解为一个摄像头,或者一个监控护画面,一个视频。
VideoEncoderConfiguration对应的是视频编码配置,可以理解为一个视频源对应不同的画面配置,一个视频对应的标清、高清或者超清等等(主码流、副码流、第三码流等)。
一个Profile下对应有一个VideoSourceConfiguration和一个唯一VideoEncoderConfiguration。
一个VideoSourceConfiguration可以对应多个VideoEncoderConfiguration。
3、设备的RTSP的流地址获取--------Media-GetStreamUri(或者Media2-GetStreamUri)
请求只需带上ProfileToken,设备会返回对应的Uri。
4、播放Uri
可以通过RTSP客户端播放实时流。