对一个海康摄像头以28181协议接入(海康摄像头设备级的接入,非系统级别接入),分为两步:

  1. 通过sip invite将海康的ps流拉出来,由于是设备级的接入,所以直接对摄像头进行invite发起点播(IP直点)。
  2. 对拉过来的ps流进行解码。

注意点

sip invite的头域及sdp信息

sip invite构造时需要注意几个字段,如下invite 消息标红的字段

海你摄像头 android sdk 设备ip 海康摄像头uid_IP

to 头域需要携带海康摄像头的通道ID

必须携带Subject头域,值为 摄像头通道ID:通道号,通道ID(主叫的sip id):通道号

点播时,sdp中的s行必须填Play

sdp的a行描述的为PS/90000




海康摄像头的配置

如果要通过invite直呼摄像头,必须在海康摄像头28181的配置界面,配入白名单,填上主叫方的IP地址,否则invite将无应答

海你摄像头 android sdk 设备ip 海康摄像头uid_数据_02

PS流的解析

之前的几篇文章分析了海康摄像头PS流的特点,实现过一份解析代码,现在我又对代码做了些优化,下载地址

HK PS流解析




流会断的问题

在海康摄像头的web配置中会有sip服务器地址的配置,填入主叫方的IP地址和sip端口,摄像头会向主叫方注册,注意这个是只需要回复200OK即可,在点播建立后摄像头会发送28181协议中的心跳消息(是个sip message),注意也只需回复200OK即可。

必须让海康摄像头注册上来,并且必须响应它发送的心跳消息,否心跳消息超时后摄像头会断开会话。



扩展

对于现有的音视频系统接入28181一般是会有一个专门的网关实现28181的接入,除了要实现28181标准定义的信令流程外,还需对PS流进行拆包处理,将PS流中的视频数据和音频数据取出再打包成RTP进行分发。上面的PS流解析代码中只是进行了拆包取数据,并未将音视频数据进行RTP打包处理。