对一个海康摄像头以28181协议接入(海康摄像头设备级的接入,非系统级别接入),分为两步:
- 通过sip invite将海康的ps流拉出来,由于是设备级的接入,所以直接对摄像头进行invite发起点播(IP直点)。
- 对拉过来的ps流进行解码。
注意点
sip invite的头域及sdp信息
sip invite构造时需要注意几个字段,如下invite 消息标红的字段
to 头域需要携带海康摄像头的通道ID
必须携带Subject头域,值为 摄像头通道ID:通道号,通道ID(主叫的sip id):通道号
点播时,sdp中的s行必须填Play
sdp的a行描述的为PS/90000
海康摄像头的配置
如果要通过invite直呼摄像头,必须在海康摄像头28181的配置界面,配入白名单,填上主叫方的IP地址,否则invite将无应答。
PS流的解析
之前的几篇文章分析了海康摄像头PS流的特点,实现过一份解析代码,现在我又对代码做了些优化,下载地址
HK PS流解析
流会断的问题
在海康摄像头的web配置中会有sip服务器地址的配置,填入主叫方的IP地址和sip端口,摄像头会向主叫方注册,注意这个是只需要回复200OK即可,在点播建立后摄像头会发送28181协议中的心跳消息(是个sip message),注意也只需回复200OK即可。
必须让海康摄像头注册上来,并且必须响应它发送的心跳消息,否心跳消息超时后摄像头会断开会话。
扩展
对于现有的音视频系统接入28181一般是会有一个专门的网关实现28181的接入,除了要实现28181标准定义的信令流程外,还需对PS流进行拆包处理,将PS流中的视频数据和音频数据取出再打包成RTP进行分发。上面的PS流解析代码中只是进行了拆包取数据,并未将音视频数据进行RTP打包处理。