本文为个人原创,欢迎转载,但请务必在明显位置注明出处!
http://www.jianshu.com/p/e903570ed350
3GPP即第三代合作计划,是权威的3G技术规范机构。3GPP成立时的目标是实现由2G网络到3G网络的平滑过渡,保证未来技术的后向兼容性,支持轻松建网及系统间的漫游和兼容性。 其职能: 3GPP主要是制订以GSM核心网为基础,UTRA(FDD为W-CDMA技术,TDD为TD-CDMA技术)为无线接口的第三代技术规范。经过通信技术多年发展与演进,3GPP规范目前已经涵盖了以下通信标准协议:
- 2G/2.5G(GPRS/EDGE)
- 3G(HSPA)
- 4G(LTE)
- 演进的IMS技术框架
1.概述
移动终端(UE)基于IMS多媒体通话服务建立音视频通话时,需要通过CSCF代理进行控制面的信息路由,而应用服务器(AS)则提供了保持/恢复、呼叫转移和多方通话等补充服务。会话建立后,媒体数据的传输路径(Media Path) 经由PS域进行直连(无需进入IMS网络),如图中的红线所示。
IMS框架示意图.png
在《3GPP TS 24.114》规范中,媒体发送方(Sender)需要基于RTCP信息和TMMBR来对视频码率进行动态调整。而在实际的移动运营商的IMS(IP Multimedia Subsystem )网络中,有以下两种场景会使用到视频码率自适应调整:
- 网络切换(Handover)
- 网络拥塞控制(Congestion Control)
2. Handover时的码率调整流程
IMS视频通话建立之后,媒体发送方(Sender)会持续发送媒体数据给媒体接收方(Receiver);当Receiver的无线接入点发生切换时(handover)时,Receiver会从空口接收到网络发来的信令,其中包含当前网络的带宽信息;如果handover之后的网络带宽比上一个接入点的带宽小,那么Receiver将提取当前的带宽信息,然后通过发送TMMBR通知Sender调整视频编码码率(bitrate);Sender收到TMMBR之后立即回复TMMBN,并调整当前的bitrate;最后Receiver还会通过SIP UPDATE来协商更新之后的媒体能力。
3GPP-Handover时序.png3. 网络拥塞时的码率调整流程
IMS视频通话建立之后,Sender会持续发送媒体数据给媒体接收方(Receiver);当Receiver检测到当前网络拥塞时,它会对网络带宽进行估计,并通过TMMBR来通知Sender来调整视频编码码率(bitrate);Sender收到TMMBR之后立即回复TMMBN,并调整当前的bitrate。
3GPP-拥塞时序.png在IMS网络中,Sender与Receiver将通过SIP/SDP完成媒体能力的协商。完成会话建立之后,Sender与Receiver能够通过SDP获得协商后的带宽信息(as)。而在后续的码率动态调整的过程中,Sender最终设置的码率值不允许超过这个协商的带宽;当然前面也介绍了,这个SDP协商的带宽也可能会在发生网络Handover时被更新。
3GPP规范中并没有明确规定实现自适应码率调整的具体算法,但是在设计算法时需要考虑以下几个因素:
- 丢包率
- 数据包抖动(Jitter)
- 收发码率的差值
- 收发数据包速率(Packet Rate)的差值
- 播出延迟(图像数据从接收到播出之间的时间间隔)
- 往返时延(RTT-Round Trip Time)
如果以上检测数据的获得依赖于RTCP SR/RR,那么规范要求在吞吐率下降10%或以上时,需要在3帧图像的时间区间内检测到吞吐率的变化;否则,要求在8帧图像的时间区间内检测到吞吐率的变化。
3GPP虽然有这项约定,但现实中各品牌手机及芯片厂家并没有按照该约定来实现。
3.1 Sender降低码率时的行为
Sender在收到TMMBR后,若要降低码率,其过程可以分成两个阶段:
- 降低编码码率
- 延迟恢复(delay recovery)
在Sender收到TMMBR之后,通常不能立即将码率更新为最新值;所以其编码码率调整通常是一个渐变的过程,如下图所示。具体过程在此不做详述,如果有读者对该部分内容感兴趣可以自行阅读《3GPP》(附录C.2)进行学习。
3.2 Sender提高码率时的行为
当Sender发现实际的码率低于允许的码率(最近一次收到TMMBR携带的码率值)时,Sender需要逐渐提高码率以达到目标值(3GPP中要求是在0.5内完成);如果在此过程中收到TMMBR,那么这个过程将会被中止。
3.3 Receiver请求降低码率时的行为
Receiver在接收媒体数据的过程中,如果检测到吞吐率降低,则要进行以下操作:
- 当Receiver检测到当前的Thoughput下降了10%时,需要发送一个TMMBR通知Sender下降至少10%的码率(与上一个TMMBR携带的码率相比);
- 当Receiver检测到当前的Thoughput下降了25%时,需要发送一个TMMBR通知Sender下降至少25%的码率(与上一个TMMBR携带的码率相比)
这里的TMMBR要求Receiver能够尽快发送,而不是等待RTCP的发送周期。
3.4 Receiver请求提高码率时的行为
Receiver在接收媒体数据的过程中,如果检测到当前的码率可以被适当提高,则要进行以下操作:
-
当码率至少能够提高5%时,则Receiver根据以下公式计算码率并发送TMMBR:
-
当码率至少能够提高15%时,则Receiver根据以下公式计算码率并发送TMMBR:
此时,Receiver无需立即发送TMMBR,可以等待RTCP的发送周期再发出。
4.后语
3GPP规范对于视频码率调整算法并没有进行太严格的规定。一方面是因为IMS技术以及通信标准一直处于持续演进的过程当中,另一方面也给终端厂商更大的自由度来对自身算法进行调优。
Reference
[1] 3GPP TS 26.114 V14.0.0
网友评论