SIP协议
SIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。SIP主要提供了与会话建立和终结相关的五个方面功能,它们是:
(1)用户定位:用于通信的终端系统的决定;
(2)用户可用性:被呼叫方参与通信的意愿的决定;
(3)用户能力:使用的媒体和媒体参数的决定;
(4)会话建立:“振铃”,呼叫和被呼叫方会话参数的建立;
(5)会话管理:包括转移和终结会话,修改会话参数,以及调用业务等。
SIP的标准协议都是IETF制定的。SIP协议标准包括:
RFC3261:SIP的基本协议,定义了SIP的基本功能,特性等。要搞SIP的话,这个协议是不能不看的。网上有人已经将它翻译成中文,再结合英文原版协议看,应该比较好理解。
RFC3262:SIP中,如何定位服务器。这个没过多研究,一般的SIP协议栈都可以很好的支持,让它们去做就可以了。
RFC3265:事件通知机制,可通过此协议进行一些事件监控。
RFC3515:呼叫的转接。
RFC3666:与PSTN连接时的一些特性的说明。
RFC3911:通过Join的方式进行会议。
SIP库:
oSIP协议栈以及基于oSIP的eXoSIP
https://www.gnu.org/software/osip/
SDP(Session Description Protocol)
SDP(会话描述协议),用于两个会话实体之间的媒体协商,并达成一致,属信令语言族,采用文本(字符)描述形式。rfc3264协议主要概述一个请求/响应模型(offer/answer,以下叙述采用英文),包括请求/响应的实体和不同阶段的操作行为,如初始协商过程和重协商过程,并简单介绍消息中各种参数的含义。
下面示例摘自3264协议[1]
v=0
o=carol 2890876487228908764872 IN IP4 100.3.6.6 //会话ID号和版本
s=- //用于传递会话主题
t=00 //会话时间,一般由其它信令消息控制,因此填0
c=IN IP4192.0.2.4 //描述本端将用于传输媒体流的IP
m=audio 0 RTP/AVP 01 3 //媒体类型端口号本端媒体使用的编码标识(Payload)集
a=rtpmap:0PCMU/8000 //rtpmap映射表,各种编码详细描述参数,包括使用带宽(bandwidth)
a=rtpmap:11016/8000
a=rtpmap:3 GSM/8000
a=sendonly //说明本端媒体流的方向,取值包括sendonly/recvonly/sendrecv/inactive
a=ptime:20 //说明媒体流打包时长
m=video 0 RTP/AVP31 34
a=rtpmap:31H261/90000
a=rtpmap:34H263/90000
GB28181
GB28181是国内的视频监控联网标准。GB28181解决了不同系统互联的问题,开放、清晰的接口,面向服务的系统架构,解决了资源管理的问题,资源的可视化、自动化管理,结合协议的状态查询和自动化视频质量检测,实现高效的系统资源管理。