GB28181移植总结

GB28181 概述

  • 控制协议:基于国际的SIP协议和XML协议,相关开源库:libosip, libeXosip, mxml, md5
  • 流媒体:采用PS流的RTP封装,简易流程:H264 -> PS -> RTP -> SIP服务器

定义

  • SIP: 会话发起协议
  • SDP:会话描述协议(关于流媒体的信息)
  • RTP:实时传输协议

SIP消息语法

请求 — 应答机制

消息 = 消息头 + 消息体

请求

请求消息头 = 起始行 + 若干消息头字段行

起始行 = SIP方法 + 请求URI + SIP版本

消息头字段行,必须包含:To, From, Cseq, Call-ID, Max-Forwards, Via 字段名

SIP方法

  • REGISTER:终端注册
  • INVITE:建立会话
  • CANCEL:取消发送请求
  • ACK:应答
  • BYE:结束会话
  • UPDATE:更新会话
  • OPTIONS:终端支持的SIP方法
  • INFO:终端查询
  • SUBSCRIBE:事件订阅
  • MESSAGE:即时通信
  • NOTIFY:事件通知

除了ACK,其他都需要应答

应答

应答消息头 = 状态行 + 若干消息头字段行

状态行 = SIP版本 + 状态码 + 状态说明

消息头字段行 = 字段名 + ‘ :’ + 字段值

状态码

  • 1xx:临时应答
  • 2xx:请求成功
  • 3xx:请求重定向
  • 4xx:请求失败
  • 5xx:服务器错误
  • 6xx:严重错误

字段名:

  • via:用于事务传输,必须包含branch参数(事务层的事务标准),必须以“z9hg4bk”开始
  • To:请求消息的逻辑接收者,包含tag参数(Dialog 标识的组成部分)
  • From:请求消息的逻辑发起者,包含tag参数(Dialog 标识的组成部分)
  • Call-ID:初始请求标识,Dialog的组成部分,具有唯一性
  • Cseq:请求序号,32bit无符号整型,每请求一次,递增1
  • Max-Forwards:最大路由次数
  • Contact:消息的逻辑通信方,INVITE请求中必须包含该字段
  • Accept:逻辑终端支持的数据格式(defalut: application/sdp)
  • Allow:逻辑终端支持的SIP方法
  • WWW-Authenticate:认证提示信息
  • Authorization:认证信息
  • Content-Type:消息数据类型,消息体非空时,必须包含该字段
  • Content-Length:消息体长度,消息头需要包含
  • Expires:过期,单位:S
  • Route:路由信息
  • User-Agent:客户端代理标识
  • Server:服务器代理标识

功能通信时序图

这里是简单的UAC/UAS的方式

注册

UAC UAS register 401 Unauthorized register 200 OK UAC UAS

–TODO-- (刷新注册: 过程类似 register_id保持不变)

注销

UAC UAS register(expires=0) 401 Unauthorized register(expires=0) 200 OK UAC UAS

设备信息查询

UAS UAC Message(DeviceInfo请求) 200 OK Message(DeviceInfo响应) 200 OK UAS UAC

实时点播

UAS UAC INVITE(Play) 101 Dialog Establishment (eXosip自动发起) 200 OK(含SDP) ACK 流媒体传输 UAS UAC

开源库交叉编译

先编译libosip2,再编译libeXosip2。

备注:arm-hisiv600-linux为交叉编译器

libosip2

tar xf libosip2-3.6.0.tar.gz

cd libosip2-3.6.0

mkdir install

./configure --host=arm-hisiv600-linux --prefix=$PWD/install

make

make install

install目录:生成相应的库和头文件

libeXosip2

tar xf libeXosip2-3.6.0.tar.gz

cd libeXosip2-3.6.0

mkdir install

./configure --host=arm-hisiv600-linux --prefix= P W D / i n s t a l l P K G C O N F I G P A T H = PWD/install PKG_CONFIG_PATH= PWD/installPKGCONFIGPATH=PWD/…/libosip2-3.6.0/install/lib/pkgconfig (指向libosip2的生成目录)

make

make install

intall目录:生成相应的库和头文件

mxml-2.10

tar xf mxml-2.10.tar.gz

cd mxml-2.10

./configure --host=arm-hisiv600-linux

make

说明:make 会发生错误,编译可执行文件,不用理会,这时已经产生了库。

拷贝相应的库:libmxml.a libmxml.so libmxml.so.1 libmxml.so.1.5

头文件:mxml.h

测试代码

你可能感兴趣的:(#,A2.,协议族)