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