当前位置: 首页 > 编程日记 > 正文

从腾讯实时音视频发家史,看爆发中的 RTC 将何去何从

作者 | 夕颜

头图 | 下载于视觉中国

出品 | AI 科技大本营(ID:rgznai100)

早在2015年左右,直播和短视频的兴起渗透进普通人的日常生活,人们信息消费的内容已经开始从文字向语音、视频信息转变。而疫情期间全民“家里蹲”的窘境,让直播连麦、视频会议、在线教育、游戏直播、电商直播等实时音视频的需求瞬间爆发。

作为实时音视频应用的底层技术支撑,信息的传递也从IM(即时通讯,Instant Message)、传统的CDN流媒体分发,向着以实时音视频为主的RTC(实时通信,Real-Time Communication)转变。

RTC是一项发展十年有余的技术,如今因为疫情被推上风口,但现阶段主流的应用还是实时音视频。为了解RTC的发展现状与未来,本文将聚焦实时音视频,从业界巨头腾讯的音视频发家史出发,从中洞见国内RTC发展的脉络。

为了更好地了解RTC,我们先从它的概念说起。

RTC、IM、WebRTC、实时音视频有什么区别?

RTC意为实时通信,它已经有了许多比较成熟的技术和应用积累,大家也许并不陌生,但因为都涉及到“实时”两个字,还是有很多人会把IM、实时音视频、WebRTC等相近的概念混淆。RTC究竟与这些词汇有什么区别?

(实时通信架构)

首先,IM和RTC都是一套网络通信系统,其本质都是对信息进行转发。其最大的不同点,是对信息传递的时间规定。从场景上来说,即时通信包括文字聊天、语音消息发送、文件传输、音视频播放等,通俗的说,就像发短信;实时通信的场景包括语音、视频电话会议、网络电话等。通俗的说,就像打电话。另外,即时通信主要要求可靠,保障信息送达,而实时通信主要要求低时延和接通率。从技术环节上来说,即时通信主要包括信息发送和确认,而实时通信则的技术细节则包括采集、前处理、编码、服务端接入、转发、服务端接入、解码、播放和渲染。此外,两者的传输协议也不同,前者最常用的通信协议是TCP、UDP,后者则是视需求而定,RTP、UDP、TCP协议或者类TCP连接协议都有使用。

RTC与WebRTC的概念最容易混淆,但实际上二者并不能划等号,WebRTC针对网页实时通信标准,只提供了基础的前端功能实现。简而言之,WebRTC仅是RTC技术栈中的几个小细分的技术组合。

而RTC最常用的应用场景之一,就是实时音视频,像疫情期间大量爆发的视频会议,就是典型的实时音视频场景。

从腾讯“三网合一”,可以看到什么?

了解了RTC的基本概念后,我们将通过剖析腾讯音视频的发展,以小见大,摸清国内RTC快速发展的背后逻辑。

以腾讯为例,是因为这家公司不仅在音视频领域布局早,且如今在国内音视频产业占据了较大的市场份额。2020年IDC报告显示,腾讯云在中国音视频产业中的解决方案市场份额排第一,覆盖了国内90%的音视频用户,成为腾讯2B业务、向外输出能力和服务的“排头兵”。且随着最近腾讯云音视频在在基础网络层面推出“三合一”的RT-ONE™音视频通信基础网络的动作,RTC能力进一步得到整合。从腾讯音视频技术和业务演进历程,可以一定程度上折射出国内音视频的发展史。

腾讯所谓的“三合一”RT-ONE™音视频通信基础网络,是指融合了自家积累多年的TRTC实时音视频通信网络、IM即时通信网络与CDN流媒体分发网络,其中TRTC网络主要承载腾讯的音视频实时通信业务, 可帮助用户快速搭建低延时的音视频互动解决方案,IM即时通信网络负责即时通信消息和业务信令,CDN则可应对海量大并发直播、点播内容分发。

为什么在这个时间点推出“三网合一”,也是得益于疫情的契机。疫情期间,全民性的线上沟通交流需求让视频会议、电商直播互动、游戏连麦等实时音视频应用爆发,在技术层面上其实既需要有高并发、大带宽的CDN的流量分发,也需要高实时互动的音视频通信,更需要IM信令和通信服务的能力,这3个需求并发,为云厂商提出了新的挑战。早在实时音视频领域有所布局的腾讯把积累的三张网融合在一起,复用底层技术,共建技术能力。举个例子,微信视频号的直播功能上线,准备时间其实只有一个多月的时间,这虽然让人难以相信,但确实是因为复用了腾讯云的TRTC和直播CDN,才会在短时间内完成部署上线。

可以看到,腾讯此次“三网合一”,最大的意义就在于把其TRTC、IM和CDN的能力集中打包给客户,让用户不用在需要建设自己的RTC能力时,再花力气和资源分别对接三种不同的厂商,一站式把这三种能力都带给用户。

这让腾讯成为业界唯一一家同时具备实时通信网络、即时通信网络和流媒体分发网络于一体的云厂商,可以预见,其他厂商要想在竞争激烈的RTC市场占据优势,势必也要模仿腾讯,最终整个RTC领域都将从“内卷”中获益。

国内音视频发展中的几波发展红利

在腾讯音视频21年的发展历程中,正是因为抓住了几次发展机遇,才能水到渠成地成为音视频领域巨头。

腾讯云在音视频领域的发展,粗略可分为三个阶段。

第一个阶段在2015年之前,那时QQ后台部门(当时叫做即时通讯平台部)为了支撑QQ的海量并发和全球互联,其实已经具备了双向视频通话的能力,积累了音视频通信的技术栈。

反观这个阶段,人们的内容消费还主要是以文字和图片为主,在这些场景下主要关注的是图片加载的时延。而稍微先进一些的具有音视频通话能力的应用在市场上虽然也有一些,如移动视频社交应用陌陌等基于SIP或WebRTC的音视频通话软件,但QQ、微信的视频通话,在国内音视频市场中仍然占大头。

到第二个发展阶段(2015-2020年),腾讯开始做能力开放,基于腾讯云品牌对外开放视频相关能力服务。再到2016年,国内迎来了直播风口,腾讯抓住了直播CDN高速发展的红利,特别是游戏直播。再到2017-2018年,以快手、都与、B站为标志,短视频也迎来爆发期,腾讯又及时抓住了CDN流媒体短视频的红利。前后两波红利使得腾讯的CDN流媒体分发网络快速发展,成为中国最大的CDN服务商之一。

(图源:视觉中国)

自此之后,音视频基本上已经从泛娱乐渗透进各个垂直行业,人们内容消费的习惯的改变,让音视频成为各行各业的基础设施。

这个阶段,RTC技术的进展支撑了直播和短视频的爆发,反过来也让RTC技术和应用获得了珍贵的发展机遇。这时候,人们主要关注的是视频的播放是否流畅,而基于WebRTC的低时延视频系统不断优化,甚至出现了支持8K全景的直播产品,如阿里视频云在2018年云栖大会上展示的全球首个8K互联网直播解决方案,超高清视频标准体系建设越来越完善,低延迟、高清的实时互动交流体验已经完全不是问题。

2021年之后,腾讯音视频进入了第三个发展阶段,也就是在疫情催化下的线上需求的爆发,腾讯云再次抓住了在线教育、娱乐、金融和电商直播等在线服务的红利,迅速覆盖主流市场。

实时音视频发展方向与趋势

三次实时音视频的历史发展机遇,腾讯都接住了,自然而然跻身国内RTC头部企业。距离我们最忌一次的新冠疫情把RTC推向了风口,几乎所有人都认为这将是一个潜力巨大的发展领域。

腾讯也是如此,在此期间,腾讯发现了互联网对于IM和实时音视频的需求量意外地巨大,TRTC的用户体量和IM的客户数呈井喷式爆发,他们认为,相信未来两到三年,TRTC个IM这两张网一定会发展成与CDN同等体量和同等技术规模的网络,而在公有云能力和底层设施之间进行大通和共建大有可为,这次机会将是实时音视频发展的一次重大历史机遇和转折点。

据腾讯预估,音视频直播、实时音视频这两个实时相关的领域今年的全球市场规模将达到50亿元,RTC多人互动实时音视频领域虽然现在的体量还较小,但预估今年市场空间将达到15-20亿,未来几年年复合增长率将保持在30%-40%。

整个行业和全球资本对于实时音视频都非常看好,究其根本就在于资本认为实时音视频将和5G、云计算一样,成为未来的核心基础设施之一。再者,除了互联网,大量传统行业进行数字化转型,音视频通信的需求量必然不会小。

以实时音视频为代表的RTC已经在风口上随时起飞这一点毋庸置疑。那么未来,实时音视频未来有哪些发展趋势和方向值得业界格外注意呢?腾讯云副总裁李郁韬给出了自己的预判。

他认为,安全将是实时音视频未来需要重点关注的方向,也即机遇所在。不同于直播,实时音视频的通信安全非常重要,对于隐私的诉求较高,端到端加密,自定义秘钥等加密技术都是未来相关厂商需要提供的能力保障。

另一方面,未来在音视频的服务中,大家关注的指标无非是时延、成本、卡顿率、质量指标,用一套服务就能够把这些需求全部满足是用户希望看到的。腾讯未来可能会进一步发布一些云端或终端的产品,其实都是往这个思路上走。

多样性协议以及不同场景解决方案的组合,也是腾讯未来真正的着力点。之前做直播,主流的协议适配主要是上行协议RTMP,下行协议FLV,而现在很多上行也开始使用类RTP的协议,或者UDP之上的协议来解决弱网的问题。随着腾讯云3张网打通,在上行部分,腾讯云计划逐渐构建比较完善的SRT协议,QUIC后续也会支持。下行也是类似的思路,所有的协议都会平行支持,包括基于WebRTC CDN推出快直播,基于QUIC CDN推出点播加速的CDN产品。

本文以腾讯云音视频的发展历程为例,展示了国内实时音视频发展的现状与未来,数字和成熟的应用案例都说明,以实时音视频为主要应用场景的RTC正遇历史机遇期,谁能抓住这波红利,在RTC竞争中杀出重围,时间会给出答案。

更多精彩推荐  遏制企业数据泄露,大咖切磋云安全的攻防之道Mendix 披露低代码方法论,解读真实技术趋势
张一鸣卸任CEO,立下10年之约,期望突破线性延伸王炸不断,半导体巨头们到底在打什么牌
Python 爬影评,《悬崖之上》好看在哪里点分享点收藏点点赞点在看

相关文章:

山寨c 标准库中的getline 函数

2019独角兽企业重金招聘Python工程师标准>>> 要山寨一个函数,只要看两点 原版函数的形参。原函数的返回值。下面是函数原型。 ssize_t getline(char **lineptr, size_t *n, FILE *stream); 函数返回值。 RETURN VALUE On success, getline() and getde…

封ip对爬虫的影响

今天要聊的是封ip对爬虫的影响。我认为封ip能拒绝一部分网络请求,减轻服务器的压力,但是如果要是建立一个好的ip池,封对爬虫的影响不大。 爬取国内一个拍卖公司的网站,刚开始用多进程下载,每分钟能爬取 1000个页面&…

Python 的一万种用法:制作 Web 可视化页面

来源 | 法纳斯特头图 | 下载于ICphoto一谈到Web页面,可能大家首先想到就是HTML、CSS或JavaScript。本次小F给大家介绍一下如何用Python制作一个数据可视化网页,使用到的是Streamlit库,轻松将一个Excel数据文件转换为一个Web页面,提…

【Go语言】LiteIDE使用的个人使用方法

Go语言开发 可以使用的IDE很多 (Goclipse,sublime,notepad,vim等)目前使用的最顺手的就是LiteIDE了 但是尽管这样,一开始使用LiteIDE也有很多不习惯的地方,下面主要总结了一些自己喜欢的用法 首…

发挥大数据及其产业在推动发展方式转变上的作用

大数据时代的到来,互联网成为基础设施,数据变成重要资源,这不仅意味着海量、多样、快速的数据处理和技术创新,更为重要的是改变了传统要素的组合方式。这种变化客观上要求必须转变传统的经济增长方式,实现创新驱动发展…

Google 全球 IP 地址库一览表(更新中)

IP 地址来源:http://www.kookle.co.nr,共计4351个。【链接】http://www.kookle.co.nr/https://github.com/justjavac/Google-IPsBulgaria93.123.23.193.123.23.293.123.23.393.123.23.493.123.23.593.123.23.693.123.23.793.123.23.893.123.23.993.123.2…

Linux下的阻塞(Block)

阻塞(Block)这个概念。当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了(比如网络上接收到数据包,或…

发布 128 核 Altra Max,自研内核,明年推出 5nm 处理器,“性能怪兽”Ampere 搞大事?...

作者 | 伍杏玲出品 | AI 科技大本营(ID:rgznai100)头图 | 下载于ICphoto2015 年,在英特尔就职 28 年的总裁 Renee James 辞职,正在大众纷纷猜测她将如何开启下一段旅程时,她有了创业的想法,2017 年带领新团…

纷纷布局的全光网,是你所熟知的吗?

近日,中国电信甘肃公司举行甘肃全光网建成发布会,至2017年4月30日,甘肃省已建成14个全光网市州、87个全光网县区、1234个全光网乡镇、10000个全光网行政村,全省市、县、乡光网宽带覆盖率达到95%以上,全面实现光纤到户;…

内存转换Image到Icon

时候我们需要在内存中转换Image格式到Icon 根据经验,通常我们应该可以这样做 Image image xxxx;///假设这里已经有一个Image对象 System.IO.MemoryStream mStream new System.IO.MemoryStream();///创建内存流 image.Save(mStream, System.Drawing.Imaging.Ima…

Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法

一、Spring定义bean,Component、Repository、Service 和 Controller Spring 2.5 中除了提供 Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:Repository、Service 和 Controller。在目前的 Spring 版本中&#xff0…

谁是“艾灵”?是腾讯的真国风 AI 虚拟人!

近日,腾讯AI虚拟人艾灵再秀出新技能,首次展示AI作诗、AI书法等国风才艺,并与青年歌手白举纲跨次元合作,共同演唱国风新歌《百川千仞》。AI“艾灵”诞生于腾讯AI Lab,来自实验性、探索性技术项目“多模态虚拟人”。机器…

[Java实现] 图片择优(选择最清楚的图片)

FuzzyDetection 图片择优(选择最清楚的图片)【Java实现】效果不错,大家可以根据我的源码改成自己使用的语言并应用到自己项目中。 实现思路 获取图片的灰度图数组使用拉普拉斯算子进行卷积运算 {0, 1, 0, 1, -4, 1, 0, 1, 0}获取结果的方差与…

C#获取硬盘序列号

using System; using System.IO; using System.Runtime.InteropServices; using System.Text; using Microsoft.Win32; namespace Wjb.ReadOrWriteIniAndReg { /// <summary> /// HardDiskVal 的摘要说明。 /// 读取指定盘符的硬盘序列号 /// 功能&#xff1a;读…

Arm 发布移动端 v9 体系新架构,CPU、GPU、IP全囊括了

作者 | 夕颜头图 | 下载于ICphoto出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;2021年5月25日晚&#xff0c;Arm发布了针对移动端的Armv9体系新架构&#xff0c;除了公布首款全面计算&#xff08;Total Compute&#xff09;解决方案&#xff0c;Arm还发布了首批基…

16条很有用的Chrome浏览器命令

为什么80%的码农都做不了架构师&#xff1f;>>> Google Chrome浏览器有很多的特性在界面菜单中是没有体现的&#xff0c;你可以通过「chrome://命令」来访问。在Chrome的浏览器地址栏中输入命令&#xff0c;就会返回相应的结果。下面是16个非常有用的chrome://命令…

Spring集成Redis方案(spring-data-redis)(基于Jedis的单机模式)(待实践)

说明&#xff1a;请注意Spring Data Redis的版本以及Spring的版本&#xff01;最新版本的Spring Data Redis已经去除Jedis的依赖包&#xff0c;需要自行引入&#xff0c;这个是个坑点。并且会与一些低版本的Spring有冲突&#xff0c;要看官方文档和不断的测试。 继上一篇文章ht…

leetcode -- 3 sum

3-sum 题目描写叙述&#xff1a; Given an array S of n integers, are there elements a, b, c in S such that a b c 0? Find all unique triplets in the array which gives the sum of zero. 题目要求&#xff1a; Elements in a triplet (a,b,c) must be in non-desc…

C#中如何得到机器的IP地址

如何使用DNS类并得到机器的IP地址的技巧 介绍 这篇文章并不是技术纵览或大型讨论&#xff0c;而更像是关于如何得到IP地址或主机名称的技巧集锦。在 Win32 API编程中你可以使用NetWork API&#xff0c;在.NET平台中也是类似的。唯一的不同之处是你要找到并理解为完成这个任务需…

让浏览器开挂的插件,测评师教你如何选

CSDN下起了红包雨399 元智能音箱199 元天猫精灵300元现金红包/会员100元红包/会员更有千万流量曝光100%有奖......作为日常总发现 " 宝藏 " 的你总体验过一些 " 王炸 " 级别的chrome插件让你想 “ 真诚 ” 安利所以&#xff0c;CSDN开启了彩虹屁chrome插件…

JQuery:JQuery 中的CSS()方法

JQuery:CSS()方法jQuery css()方法&#xff1a;css()方法设置或返回被选元素的一个或多个样式属性。1、返回 CSS 属性如需返回指定的 CSS 属性的值&#xff0c;请使用如下语法&#xff1a;css("propertyname");下面的例子将返回首个匹配元素的 background-color 值&a…

j.u.c.locks.AbstractQueuedSynchronizer.Node

2019独角兽企业重金招聘Python工程师标准>>> AQS是JUC当中最核心的部分&#xff0c;大部分多线程讲解&#xff0c;都不会详细讲AQS&#xff0c;AQS的源代码&#xff0c;要看明白还是有点困难的。但是一旦看明白了&#xff0c;结构还是蛮清晰的。这里我们把AQS拆开&a…

使用C#开发COM+组件

一般来说&#xff0c;在IT技术界以及硬件产业&#xff0c;技术的更新换代速度非常得惊人&#xff0c;而惯例是所有的新技术都会遵循向下兼容的原则&#xff0c;但是.NET技术不仅仅做到了这一点&#xff0c;.NET甚至实现了相互之间的各自调用&#xff0c;这一点是非常难能可贵的…

香奈儿的 AI 实验室里,发生了什么?

作者 | 库珀来源 | 数据实战派头图 | 下载于ICphotoAI 已经能够在给你播报今日天气时提供穿衣建议。相信你大多数情况下都听进去了。如果它给你提供美妆建议呢&#xff1f;包括香奈儿在内&#xff0c;越来越多的美容品牌正在将 AI 技术结合到其产品之中。可是&#xff0c;人工智…

VS code for python开发利器

转发点赞支持引言最近在整理python自动化测试课程的内容&#xff0c;发现了微软出的vs code编辑器太牛逼了&#xff0c;非常好用&#xff0c;而且轻量的不要不要的&#xff0c;特此记录下&#xff0c;有选择纠结症的朋友我强烈推荐使用ta。PS&#xff1a;兼容win10且兼容高分辨…

C#编码标准--命名约定和风格

命名约定和风格 1&#xff0e; 使用Pascal的命名规范命名类型和方法的名字。 public class SomeClass { public SomeMethod(){} } 2&#xff0e; 使用camel命名规范命名局部变量和方法的参数。 int number; void MyMethod(int someNumber) {} 3&#xff0e; 在命名接…

与AMD合并后,赛灵思与英特尔、英伟达在数据中心市场呈“三足鼎立”之势

被以350亿美元的价格收购后&#xff0c;全球独一家FPGA公司赛灵思归于芯片巨头AMD的麾下&#xff0c;正式成为AMD的一份子。如果英伟达收购ARM顺利进行&#xff0c;无疑将让半导体行业格局再次发生巨变。 赛灵思为什么会选择归于AMD旗下&#xff1f;成为AMD的一份子之后&#…

Android -- Fragment注意事项

ViewPagerFragment 让Fragment成为ViewPager的一页时&#xff0c;FragmentManager会一直保存管理创建好了的Fragment&#xff0c;即使当前不是显示的这一页&#xff0c;Fragment对象也不会被销毁&#xff0c;…

C#编码标准--编码习惯

1. 避免将多个类放在一个文件里面。 2. 一个文件应该只有一个命名空间&#xff0c;避免将多个命名空间放在同一个文件里面。 3. 一个文件最好不要超过500行的代码&#xff08;不包括机器产生的代码&#xff09;。 4. 一个方法的代码长度最好不要超过25行。 5. 避免方法中有超过…

官宣!《新程序员·开发者黄金十年》正式发布

“在互联网还不发达的时代&#xff0c;就是《程序员》伴我成长的。”“怀念啊&#xff0c;曾经《程序员》的日子。”“我是看着《程序员》长大的&#xff0c;大二时买了创刊号。”“这可是我们这一代人大学时候满满的回忆&#xff0c;也是当时寝室中传阅最多的书。”“每年的《…