织梦CMS - 轻松建站从此开始!

伟哥城

当前位置: 主页 > 伟哥延时 > 伟哥延迟时间 >

浅析低延迟直播协议设计:RTP/RTCP

时间:2017-07-01 16:36来源:www.weigecheng.com/ 作者:百度爱好者 点击:
声明:本文来自「又拍云主办的Open Talk——在线教育:技术让知识触手可及」的演讲内容整理。PPT、速记和现场演讲视频等参见“ UPYUN Open Tal

嘉宾:王宇航,红点直播联合创始人&CTO。毕业于中国科学技术大学,风云直播创始团队成员,曾参与逆向Adobe Flash非公开加密网络协议RTMFP,负责设计实现百万同时在线的大规模视频弹幕系统。2013年联合创立红点直播,现负责团队管理产品研发及架构设计等相关工作。

责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位。

如今的直播市场非常火爆,有很多直播云服务的提供商可供产品选择。同时视频直播产品喷涌而出,比如大家耳熟能详的映客、YY,还有最近特别火爆的一直播。

基于TCP的协议延迟不够低

众所周知,直播中通用CDN大部分提供的是RTMP的方案以及HLS的方案。HLS在手机H5里面的兼容性非常好,而RTMP是Adobe的协议,它在延迟、稳定性和分发质量方面平衡得很不错。但是当涉及会议场景时,基于TCP的协议就不能完全满足我们的要求了。

假设在没有丢包的状态下,正常设定传输是一个流媒体,同样数据具有时效性,从而单位时间内产生的数据有一个固定的量。固定量的数据在TCP协议站上有什么问题?TCP协议设计的目标是为了最大化带宽的利用率。它在传输的过程中会衡量信道的宽度,认为其所要达到的效果应该是使用户尽可能的高效使用网络。丢包的状态下,协议栈做出非常严厉的惩罚,降低它认为信道的宽度,并认为用户已经最大化的利用了这个网络,会认为如果有丢包是用户发多了或者是网络出现了拥塞。通过发送数据的数量来减缓拥塞情况,最终让它再回归正常水平。比如丢下一个数据,TCP做了一次惩罚,使后面的数据只能向后推,这个时间就是延迟的起点。

由此可以了解对丢包的处理是网络协议对延迟影响最大的一个因素。可能有的协议或者有一些网络对丢包不在乎,有一个包能够到达目标地点就足够了,但并不是所有的协议都能这样。

RTP

RTP(Real-Time Protocol)协议涵盖所有实时相关的东西。可以支持实时数据端到端传输、载荷类型定义、为数据打上序号、时间校对以及分发监控等。它不能保证及时发送以及质量保证,比如让协议给用户发送一个数据,其不保证发送的时间以及数量。它也不保证送达,也没有时序,如发的顺序是12345,收到的顺序可以是54321。这个协议听上去几乎不能用,但是这样一个没支持太多东西的协议实际上也给我们一个空间,致使我们可以在此个基础上为它增加很多策略,如拥塞控制算法可以增加包括对于时序的处理和对于质量的处理。

RTP头

RTP协议的头,左上第一行是版本号,表示的是协议标准;第二行代表协议后面有没有追加空白,然后X表示这个头是不是有扩展,CC是一个数量,M和PT其中有8个比特,表示数据类型,可以自定义,其次是一个序号,一个时间戳;下面的SSRC是同步源的标识,它支持转发和混合器的结构,混合器结构的功能是把参与会议的多媒体混成一路,再转给其它的听众。

浅析低延迟直播协议设计:RTP/RTCP

RTP网络样例

RTP组织网络的样例,共分为三个角色:一个是终端,可以理解为每一位参与者,参与者既可以说话,也可以听到其他与会者的内容;第二个是混合器,其最直观的体现在音频领域,可以将多人说的话混成一路,首先它的带宽减少了,同时时序自然对上,保持一致;第三个角色是一个转发器,即把以上流转出去。

如下图所示,E1和E2经过第一路混合器,转出来即为SSRC值,它的值发生了改变。但是原来如E1:17,CSRC会体现在后面。通过这样的网络,能够组建一个支持会议场景的内容分发,尤其是流媒体的实时传输。

浅析低延迟直播协议设计:RTP/RTCP

RTCP

为弥补RTP的不足,或者RTP没有保证的东西,我们设置了额外的协议即RTCP。RTCP共有5个类型数据包:发送方报告、接收方报告、源描述、结束通知、远程调用方法。

在发送方报告中,发送者真正关心是数据发送量、丢失情况、数据到达时间以及网络过程中的抖动;

浅析低延迟直播协议设计:RTP/RTCP

接收方的报告主要反应发送方数据质量的信息,RTP里包含序号,可以体现多少序号断的、未收到。其中涉及到抖动和RTT的概念。

浅析低延迟直播协议设计:RTP/RTCP

抖动

抖动指的发送方发两个数据即A和B,第一秒发A,第二秒发B。对于接收方来说,比如接收方第三秒收到A,但不一定第四秒能够收到B,可能第五秒才收到B。发送方隔1秒发送数据,但是接收方那边差2秒,这2秒和1秒称之为抖动。通过以上事例,可以看出时延具有不确定性。可以通过以下的公式对抖动进行平滑处理。

浅析低延迟直播协议设计:RTP/RTCP

RRT

RRT(Round-Trip Time)描述的是一个数据包从发送方发送到接收者,接收者给出反馈,反馈再回到发送方,这时发送方识别到的时间差就是往返时间。其中计算用到的量包括DLSR和LSR。DLSR是距离上一个发送报告的时间。接收者可以使用DLSR,帮助发送者利用返回之后的报告算出来往返时间。RTT更像工程师日常使用网络中的ping。

浅析低延迟直播协议设计:RTP/RTCP

流媒体丢包处理方案

流媒体丢包一般有3种处理方案:重传、前向纠错、交叉传输。

重传

第一个策略是重传,很明确地丢什么数据重新传什么数据,不会浪费资源。

前向纠错(FEC,Forward Error Correction) (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容