1、音视频通信
音视频通信完整流程有如下几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等。
每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有H.263,H.264、H.265等,传输就涉及到了本文重点介绍的 RTSP/RTMP/RTP/RTCP 等流媒体协议以及相关的信令技术。
2、流媒体协议
流媒体协议一般分成传输控制报文的协议和传输媒体数据的协议。传输控制报文的协议一般用于协商流媒体通信建立的参数等,如SIP,RTSP等协议。传输媒体数据报文一般用于传输音视频媒体数据,如RTP/RTCP/SRTP/SRTCP等协议。此外,也有部分协议将控制信令和媒体信令放在一个连接里传输的,如RTMP等协议。下面会详细介绍这些具体的协议。
2.1、SIP协议
SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点。
SIP作为控制信令一般要和RTP/RTCP媒体信令配合起来用在音视频通话上,整个音视频交互如上图所示。
交互细节如下:
-
Alice发起Invite请求(携带SDP,媒体初始化描述信息),邀请Bob进行音视频通话。
-
如果Bob在线,服务器将Alice的请求转发给Bob。
-
Bob收到Alice的请求之后,回180 Ringing振铃以及200 ok的确认接入音视频通话。
-
Alice收到确认后,使用RTP/RTCP进行音视频通话。
-
Alice发Bye请求,挂断电话。
-
Bob回200 ok,确认挂断电话。
SIP协议原来比较多的用于视频会议,现在基本上被RTMP协议取代了。