摘要:音视频传输协议众多, 不同业务应该如何选择? RTSP、RTMP、RTP/RTC、HLS、MSS、DASH、WEBRTC、RIST、SRT;在此我们就从业务发展的视角来理解各种流媒体协议,帮助大家有更加清晰的理解,选择时做出更理性的判断。

IPTV

IPTV 是由运营商主导建设的一套系统,他的主要对标对象是传统广电的数字电视。所以这套系统首要解决的是大规模直播的问题,在此基础上还需要支持点播、时移、回看等新业务。运营商的优势就是可以自建一套可管理的网络,所以直播就基于组播技术进行大规模分发。主要技术栈是RTP+TS over multicast,这个技术大大降低了直播峰值对流媒体服务器的压力。而点播、时移、回看业务由于必须使用单播传输,所以当时选择的技术栈是使用RTSP 进行流媒体控制,使用RTP+TS over UDP(少量基于TCP)进行数据传输。

现在这套系统服务了全国接近1.7 亿多用户。这套技术栈面临的挑战和对应的解决方案主要包括几点:

解决单播基于UDP 传输丢包的问题,丢包会导致用户观看花屏或爆音,我们基于RTSP 协议扩展制定了一套规范,基于RTSP 的GET_PARAMETER扩展了重传数据报文的信令,主要是基于NACK 原理进行设计,通知流媒体服务器哪个报文没有接收到,流媒体服务器根据请求中携带的RTP 序号进行重发。

解决组播传输丢包问题,组播报文丢包会导致直播花屏或爆音,我们采用了2 个手段解决这个问题:

· FEC
· ARQ

通过FEC 技术增加等步长的冗余报文,可以解决随机丢包问题,但是无法解决突发连续丢包问题,这个时候就需要ARQ 技术,我们在系统中增加一个RETServer,RET Server 也会加入组播组接收和机顶盒收到的相同的组播报文,机顶盒在检测到丢包后,会向这台服务器发起NACK 报文,RET Server 收到请求后根据请求的RTP 需要将对应的报文发送给机顶盒。

解决组播传输下频道快速启动问题,终端加入组播组的时间是随机的,无法保证每次加入组播组后接收到的报文就可以理解用于解码并显示,所以我们通过在系统中增加一个FCC Server,解决该问题,终端在起播观看一个频道的时候,优先向FCC Server 请求一条单播流,FCC Server 会以1.X 倍的速率将I 帧和解码所需的报文发给终端,配合终端快显技术可以实现300ms 以内的频道切换速度。

IPTV多屏

随着移动终端的发展,运营商希望在IPTV 业务基础上,发展手机等多屏业务,开始支持HLS(主流)、MPEG DASH(部分海外运营商,支持MultiDRM)流媒体协议。这套系统在流媒体协议层面临的问题是不同屏幕,不同DRM 格式,多种格式带来了存储空间成倍的上升,特别是NPVR 个人录制业务,对存储的需求非常大。主要解决思路就是JITP(Just In Time Package),即只要存储一份内容,根据用户观看的内容格式进行实时格式转换。

OTT点播

伴随着以Youtube,Netflix,爱奇艺,优酷,腾讯视频为代表的OTT 视频点播平台的崛起,以及苹果手机的普及和HLS 协议的出现,流媒体协议从HTTP渐进式下载发展到ABR Streaming,HLS 是其中最为主流的一种ABR 协议,HLS 也成为了各个OTT视频平台的首选视频传输协议。这套系统在流媒体协议层面临的问题和解决方案如下:

  1. 解决基于互联网的大规模分发问题。CDN 技术可以很好的解决这个问题,这也是OTT 流媒体协议基本上在设计之初就考虑对CDN 友好的原因。
  2. Netflix 由于业务量的规模发展到一定规模,从最开始选择第三方CDN,走向了自建CDN(Open Connect)的道路,但是他的技术栈依旧是HLS 和DASH 这类对CDN 友好的流媒体协议。

OTT 直播

细分为事件类(新闻/ 赛事/ 演唱会)直播、个人(游戏/ 网红/ 秀场)直播。满足这类直播业务的流媒体协议层面临的问题和解决方案如下:

1、首先他们和OTT 点播一样,需要解决基于互联网的视频大规模分发问题。

2、其次直播相较于点播需要额外考虑的一点就是直播时延,第一类:电视台/ 事件(新闻/ 赛事/ 演唱会)直播基本没有和观众互动的要求。所以它们依然选择对CDN 友好的HLS 和DASH 协议,但是时延会高达10-30s,随着CMAF 格式的出现,根据我们在实验室的测试数据表示时延可以小于5s。第二类:个人(游戏/ 网红/ 秀场)直播,以国内直播平台为例,商业模式主要靠打赏分层,所以要求直播的E2E 时延必须低于5s,否则观众与主播的互动效果非常差,直接影响直播平台的收入。这类厂家选择的技术栈为延迟更低的RTMP 和HTTP FLV。

3、随着手机和4G 网络的普及,部分主播也开始尝试在户外进行开播,由于户外直播的网络条件不可控,而RTMP 是基于TCP 传输的,导致在户外4G网络条件不稳定的环境下,直播效果很差,所以针对弱网环境下的直播上行效果差成为直播平台需要解决问题。为了解决这个问题,大家把眼光转向UDP,基于UDP 的直播传输技术逐步进入人们的视野。常见的有ZIXI、SRT 和RIST。ZIXI 属于纯商业化公司,显然不合适大量个人直播上传这类商业模式的直播平台。SRT 有相对成熟的开源社区支持,所以在国内应用较为普遍。RIST 是由Video Services Forum (VSF)于2017 年初开始制定的可靠的互联网流传输协议(Reliable Internet Stream Transport,RIST),相较于SRT,基于UDT 非实时流媒体的技术栈构建,RIST 一开始便使用较为成熟的RTP+RTCP 技术,而且他只定义了标准化的语法,允许实厂家在此基础上进行创新,而又不影响互相操作。经过近几年的发展RIST 支持的场景越来越多,也越来越成熟。

4、直播业务发展越来越繁荣后,又出现了多主播PK,主播与观众连麦等场景,这些对时延的要求直接从5s 变成1s 以内, 甚至小于400ms, 为了满足业务的发展,直播平台选择了实时通信的技术栈RTP+RTCP over UDP。一旦引入UDP,就需要解决丢包带来的视频体验问题,这里常见的技术有FEC、ARQ 等。

实时音视频 RTC

随着5G 网络的普及,以及疫情带来的影响,人们对实时音视频技术的应用场景会越来越多,主要包括:会议、连麦、音视通话、视频通话、在线教育、远程医疗等。由于这些应用场景对时延的要求<400ms,所以从技术栈选择来看,基本上都是选择RTP/RTCP over UDP 的方式进行音视频数据的输出。

如果把流媒体协议做三个维度划分:质量(画质/帧率)、平滑、延迟。实时音视频通信和OTT 直播上传场景相比,对低质量的容忍度更高,即允许降低一定的质量,下降(降帧率等)来换取更加平滑的体验和更低的延迟。这个选择上的差异,导致在技术设计上需要打通网络传输系统和音视频编解码系统,实现根据网络传输质量实时动态调整音视频编码参数,在质量、时延、平滑三个维度上进行权衡得出最优解。

流媒体新的发展方向

1、 新的媒体表现形式包括VR、自由视角、点云;他们与传统视频的最大区别在于,传统视频主要支持时间维度的定位,而新的媒体,除了支持时间维度的定位,还支持空间维度的定位。当前主要在MPEG 标准组织中进行讨论,基于MPEG DASH 规范进行演进。以VR 为例,一般人类的FOV 视场角<140°,新的流媒体协议利用这个特性,可以实现根据观众观看的视频范围,进行部分传输,从而降低的对带宽的诉求,这也很好的解决了传输的数据量越来越大对带宽要求苛刻的问题。华为云视频的Cloud VR 产品已经支持8K VR、自由视角的直播和点播服务。

2、 全互联实时音视频直播,随着在线教育和在线办公的普及,越来越多客户对具备大规模分发能力的低时延互动视频服务有着强烈的诉求,当前的架构要么支持大规模分发,要么支持低时延、互动,无法同时具备三者的能力。我们认为未来的主流架构需要同时满足这三样能力,华为的实时音视频服务已经完成这套架构的实现,致力于在流媒体领域持续深耕,让我们共建流媒体的未来。

点击关注,第一时间了解华为云新鲜技术~

音视频传输协议众多, 5G时代不同业务应该如何选择?的更多相关文章

  1. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(六)RTP音视频传输解析层之音视频数据传输格式

    一.差异 本地音视频数据格式和用来传输的音视频数据格式存在些许差异,由于音视频数据流到达客户端时,需要考虑数据流的数据边界.分包.组包顺序等问题,所以传输中的音视频数据往往会多一些字节. 举个例子,有 ...

  2. RTP RTCP在音视频传输与同步方面的使用

    转自:http://blog.csdn.net/kof98765/article/details/17733701 1 音视频实时传输 1.1 Jrtplib库介绍 本系统采用开源库Jrtplib进行 ...

  3. 树莓派+android things+实时音视频传输demo之遥控小车

    做了个测试小车,上面安装了摄像头,通过外网进行视频传输: https://www.bilibili.com/video/av23817880/

  4. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(八)RTP音视频传输解析层之MPA传输格式

    一.MPEG RTP音频传输 相较H264的RTP传输格式,MPEGE音频传输格式则简单许多. 每一包MPEG音频RTP包都前缀一个4字节的Header,如下图(RFC2550) “MBZ”必须为0( ...

  5. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(七)RTP音视频传输解析层之H264传输格式

    一.H264传输封包格式的2个概念 (1)组包模式(Packetization Modes) RFC3984中定义了3种组包模式:单NALU模式(Single Nal Unit Mode).非交错模式 ...

  6. 音视频通讯QoS技术及其演进

    利用多种算法和策略进行网络传输控制,最大限度满足弱网场景下的音视频用户体验. 良逸|技术作者 01 什么是QoS?音视频通讯QoS是哪一类? QoS(Quality of Service)是服务质量的 ...

  7. 腾讯技术分享:微信小程序音视频技术背后的故事

    1.引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视,小程序上的各种技术体验也越来越丰富.而音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也当然不能错过. ...

  8. 开发者实践丨Agora Home AI 音视频的未来

    本文作者是本届 RTE 2021 创新编程挑战赛获奖者,来自上海交通大学的李新春.他分享了本次参赛作品的构思.系统设计和开发的心得. 01 不得忽略的背景 从国家层面上讲,十四五期间我国人工智能发展的 ...

  9. android音视频点/直播模块开发

      音视频 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能,那么作为开发一个小白, ...

  10. 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践

    1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...

随机推荐

  1. 14.11 Socket 基于时间加密通信

    在之前的代码中我们并没有对套接字进行加密,在未加密状态下我们所有的通信内容都是明文传输的,这种方式在学习时可以使用但在真正的开发环境中必须要对数据包进行加密,此处笔者将演示一种基于时间的加密方法,该加 ...

  2. MQ系列16:MQ实现消息过滤处理

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...

  3. 调和级数发散率证明|欧拉常数|ln n+gamma+varepsilon_k证明|sigma(1/i)

    最近在做一个 练习 ,然后看到了 调和级数 这个东西,说实话这东西谁能在考场上想到,平日还是要多积累. 开门见山 但是我们今天只证这个东西: \[\sum^{n}_{i = 1} \frac{1}{n ...

  4. JUC并发编程学习笔记(三)生产者和消费者问题

    生产者和消费者问题 synchronized版-> wait/notify juc版->Lock 面试:单例模式.排序算法.生产者和消费者.死锁 生产者和消费者问题 Synchronize ...

  5. 容器中sh脚本明明存在,为何会报"no such file or directory"的错误?

    小伙伴碰到一起奇怪的事故,从gitlab上拉取的docker镜像项目,在本地开发机上进行docker build后,启动容器会报错如下: exec /app/run.sh : no such file ...

  6. WPF --- TextBox的输入校验

    引言 在WPF应用程序开发中,数据校验是确保用户输入数据的正确性和完整性的重要一环. 之前在做一些参数配置功能时,最是头疼各种参数校验,查阅一些资料后,我总结了数据校验方式有两种: Validatio ...

  7. 递归与分治思想:治思想 && 折半查找法(迭代 && 递归)

    1 //分治思想:将大问题拆成小问题逐一解决 2 //折半查找法:不断缩小一半查找的范围,知道达到目的,效率较高. 详情见:https://fishc.com.cn/thread-27964-1-1. ...

  8. 🔥🔥Java开发者的Python快速进修指南:面向对象基础

    当我深入学习了面向对象编程之后,我首先感受到的是代码编写的自由度大幅提升.不同于Java中严格的结构和约束,Python在面向对象的实现中展现出更加灵活和自由的特性.它使用了一些独特的关键字,如sel ...

  9. Modbus 转PROFINET 网关 TS-180在级联通讯中的应用

    一.硬件连接 TS-180 具有冗余网口功能,用户可以通过级联方式连接来进行通讯,其他资料可参考说明书.将西门子 S7-300 PLC 通过网线与5台 TS-180 串联,用户可以选择下列两种连接方式 ...

  10. 洛谷2151 [SDOI2009]HH去散步(矩阵快速幂,边点互换)

    题意:HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢变化 ...