在流媒体中常见的三种协议是SIP、RTP、RTSP协议。他们分别的网络中不同的层,为实时流媒体传播提供可能。下面这张图展示了他们所在的网络层次
目录
SIP
- SIP在应用层,是和HTTP相似的文本传输协议
- 那么像SIP和HTTP协议到底是什么?
- 功能:客户端和服务器之间的应答标准,客户端是终端用户,服务器是网站
- 用户代理:通过应用软件,客户端向服务器的指定端口(默认为80)发起一个HTTP请求
- 源服务器:应答服务器中存储着一些资源(比如HTML文档),我们称这个应答服务器为源服务器
- SIP协议
- 用来支持视频通信
- SIP(session initiation proto):会话初始协议
- session:回话,指用户之间的数据交换,数据可以是文本、音视频也可以是游戏,内容多种多样
- 采用基于文本的编码方式(和HTTP、smtp相似)
- 组成
- 用户代理
- 用户代理客户机(客户端UAC)和用户代理服务器(服务器UAS)
- UAC用来发起请求
- UAS用来相应请求
- sip代理服务器(sip proxy server)
- 中间服务器
- 过程
- UAC发送一个请求
- SIP代理服务器接受请求
- 由SIP决定下一跳服务器的地址,代理UAC向下一跳服务器发出请求
- 重定向服务器(Redirect server)
- 规划呼叫路径的服务器
- 在得到下一跳服务器的地址后向上一个服务器通知下一跳服务器的地址,自己退出这个对这个呼叫的控制
- sip注册服务器(SIP register server)
- 对UAS的注册,系统中所有的UAS都需要注册到这个服务器中,以便UAC能够通过服务器找到UAS
- 用户代理
- SIP呼叫建立过程
RTP
- RTP在传输层,由TCP/UDP发送号,由RTP传输音频或者视频数据
- RTP是基于UDP的传输协议
- 什么是RTP:
- RTP:real time transport protocol
- RTP协议作用:为IP网络上的音视频提供端到端的实时传输协议。
- 配套的相关协议:RTCP(real-time transport control protocol)
- RTP为实时传输提供时间信息和同步信息,不保证服务质量
- RTCP为实时传输提供质量保证
- 数据在发送时,先将数据封装成RTP数据,在接收端,将数据从RTP中提取出来。
- RTP格式解析
- V= 2,版本号,两位,用来标识RTP版本
- P,填充位,一位,若该位置位,则RTP的最后有填充字节
- X,扩展位,一位,若该位置位,则RTP固定头部后面跟一个扩展头部
- CC,CSRC计数器,四位,表示RTP固定头部后面的CSRC的数量
- M,标记位,一位,由配置文档解释其作用
- PT,载荷类型,七位,表示载荷的类型
- SN,序列号,十六位,用来恢复包的序列以及检测丢包。序列号的初始值随机,每次发包序列号进行加一操作。
- TimeStamp,时间戳,32位,用来获得数据包的时序,记录了该包数据的第一个字节的采样时间。时间戳是随着时间不断增加的,和有没有发送数据无关。记录的是相对时间
- SSRC,同步信息源,32位,用来同步音视频,在同一个RTP传输中不能出现两个相同的SSRC。
- CSRC,贡献源列表,0-15项,每项32位,用来标志对一个RTP混合器产生的新包有贡献的所有RTP包的源
- RTCP
- 功能:服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识
- 在一个RTP传送期间,各参与者周期性发送RTCP信息。
- 内容:已发送的数据包的数量、丢失的数据包的数量
- 作用:各参与者根据反馈信息实时调整传输速率、载荷类型
- RTP和RTCP协同作用以有效的反馈和最少的开销获得最大的传输效率。
- RTP和RTCP都是基于UDP传输的
- RTCP只携带控制信息,比较短小(短小君)
- 过程解析
- 流媒体:通过流式传输实现。
- 流式传输:边下载边观看。internet上的传输是分组传输的,且是基于不稳定的UDP协议。接收端的数据往往有延迟和乱序,因此流式传播需要解决延迟和乱序的问题。
- 延迟:在发送发对视频进行预处理,降低视频质量、对视频进行压缩处理
- 乱序:在接收方设置接收缓冲和播放缓冲
- 接收缓冲:将接受到的数据包缓存起来,然后根据时间戳和序列号对数据进行重排
- 播放缓冲:由于网络带宽不稳定,如果将重排好的数据直接播放,抖动现象可能会比较严重,为了解决这个问题,需要设置一个播放缓冲,将所有的数据放入到播放缓冲区内,按稳定的速度播放。
- RTP的传输过程
- 当应用程序建立一个RTP会话时,需要确定一对目的传输地址
- 每个传输地址中存储一个网络地址以及一对端口地址,网络地址为IP号,端口地址有RTP端口和RTCP端口
- RTP端口和RTCP端口分别使用偶数端口和奇数端口
- 发送过程
- 封装:RTP从上层接受流媒体信息码流(H264),封装成RTP信息流,RTCP从上层接受控制信息,封装成RTCP信息流
- 传输:将RTP数据包发往UDP中的偶数端口,将RTCP数据发往UDP中的奇数端口
- 接受过程
- 接受:从UDP中的偶数端口接受RTP数据包,从奇数端口接受RTCP数据包
- 解封装:将RTCP数据解封装为控制信息,将RTP数据解封装为码流,得到视频和音频文件
RTSP
- RTSP和SIP都在应用层
- RTSP(real-time transport streaming protocol)以C/S模式工作,实现用户在播放时的暂停、继续、后退、前进等操作。