https://www.oschina.net/news/77113/decryption-interactive-broadcast-technology

2016年9月10日,第52期【OSC源创会】在珠海圆满落幕,350余名OSCer齐聚报业大厦,聆听了一场诚意满满、干货多多的技术分享盛会。

本期源创会由5位讲师分别针对5个不同的主题进行分享,为给未能到现场以及参与活动后仍意犹未尽的OSCer更好的了解和学习,开源中国将每位讲师的演讲内容进行了整理,并将逐一发布。干货多多,不容错过!

首先是由腾讯高级音视频架构师郭亮带来的《互动直播技术解密》,主要是对目前主流直播方案的解析,以及依托于QQ音视频的腾讯云互动直播SDK在多个关键技术上的深度优化方案的分享。

郭亮的分享PPT下载地址:http://www.oschina.net/doc/44250

直击现场嘉宾访谈:https://www.oschina.net/question/2886655_2196558

完整演讲内容如下:

开源中国社区珠海的小伙伴们,下午好!感谢主持人把气氛调动的这么欢快,也很开心大家冒着大雨来参加我们的活动,包括现在也有许多不能来现场的小伙伴在线上观看我们的活动直播。

首先,做个自我介绍,我叫郭亮,来自腾讯云视频,07年毕业之后加入中兴通讯一直从事音视频相关工作,包括核心网、媒体网关等相关音视频架构。而后进入了腾讯,近一年来,一直在专注于开发腾讯的直播的一些引擎。

话不多说,我们进入主题。大家刚才应该有看到,我有和观看线上直播的小伙伴打招呼。近一年来,直播被拱上风口。据统计,在过年的一年里,有超过1000家厂商进入直播行业,现在已随处可见各种各样的直播。可以说,直播已经走进了我们的生活。

其实对于直播行业,我们有做一个自己的分析,大概将其分为以下几类:

第一种是传统的语音直播网站,像是YY、9158这些,现在发展依然强劲。

第二种是近两年兴起的游戏类直播网站,像是斗鱼、龙珠、战旗等,也已经探索出一条成熟的直播变现道路,有着不错的用户量和收益。

另外就是传统的视频网站,包括腾讯视频、爱奇艺、搜狐视频等,也推出了自己的直播业务。

还有最近兴起的秀场,像是映客、花椒等,在最近的各个热点话题背后都能看到它们的身影,也成功塑造出许多网红。
此外,像是聚美、蘑菇街、唱吧这些电商、歌唱、炒股类的网站,也纷纷加入了队伍,做跨界直播。

说完分类,接下来正式来聊本期的主题——互动直播。互动直播其实也是不断在演变,最初的主播只是简单回应观众文字类、弹幕类的提问和话题的方式,逐渐衍生出接送礼物、连麦等更具互动交流的形式。到现在,随着VR技术的逐渐成熟,已经有国内外的网站在推出VR的直播,可以说是互动直播未来的一种发展方向。

可能有人会想,既然直播这么火,那也去做一个直播的APP,或者在APP里面加入直播能力。那么问题来了,一个好的直播产品需要清晰、低延迟、秒开、连麦等等一系列的技术特性,我们到底该如何进行技术选型呢?

其实,目前市面上比较流行的是这几种直播方案:

第一种是基于TCP的RTMP,这可以说是相对成熟的一种方案,它的优势是只要浏览器支持FLASH,就可以内嵌播放;但不足的是,在互动直播中2-5S的延时会对体验有所影响。第二种FLV是基于HTTP下载协议的一个方案,在交互上比RTMP会稍微轻便点,但同样存在沟通延迟的问题。第三种HLS是目前直播中比较常见的一种方案,其最大的优势就是手机浏览器是原生支持的,这在移动互联网时代可以说是一大杀手锏;不过它最大的问题是延迟比前面两种会更为严重。还有一种RTP方案,是目前QQ和微信中做实时音视频使用的方案,它的优势就是延迟可以做到很低,控制性强,但它的一大缺点就是在PC和移动端的原生支持都是比较差的,需要做一些SDK的嵌入。

看完这四种方案,是不是发现好像并没有哪种方案是做的特别好的?在这种情况下,腾讯云做了一套自己的直播方案,对各方面有做一定的折中。首先,我们有做一套实时音频的框架,主播和观众可以实现很好的互动,保证沟通的顺畅。而为保证下行的抗损耗能力,我们又接入了OC系统的分发体系。同时,为更好的对浏览器支持,我们做了一套“旁路推流”系统,将音视频流转到RTMP、FLV或HLS等,通过传统的CDN方案推给客户端,实现浏览器原生支持。这样,我们既能实现好的延迟和抗损,也能有相对较强的兼容。

接下来,给大家介绍互动直播方案中比较核心的技术,主要针对几个关键点进行讲述。

1、秒开

举个例子,从下图可以看到,网站的开启速度对于用户留存以及网站自身收益有着很大影响。

在直播当中,秒开的重要性同样不言而喻。而影响秒开的因素非常多,包括自身的影响、和业务侧的影响、以及一些设备方面的影响等等。对于秒开,腾讯云将其分成了两个环节——进房和岀画。在进房这一部分,我们将一些可以提前做的东西提前在登陆的时候完成;另外就是针对设备上的一些启动啊进行并行操作;还有就是和业务侧的配合,像礼物状态的存取、人数的拉取等,做并行处理。而在岀画环节,则设立了后台音视频数据的双GOP缓存机制,后台根据网络上的情况和客户端向Server拉取的时机,智能的选择存取单个还是两个GOP数据,以及智能推送前一个GOP数据还是当前GOP数据,给后面的音画同步和缓存带来联动作用。

那是不是只要做完这些就可以达到很好的效果呢?

然而,并不!因为我们在做完发现后台在推送数据的时候会一下推送两个GOP庞大的数据,对带宽的压力极大。因此,我们又做了一些其他的策略来保证稳定性,包括推流速度的控制以及推流数据的QoS保障机制。我们不固定速度推送,而是根据用户当前的数据量和网络情况自动选择合适的推送速度,降低丢包,再加上保障机制,给用户稳定的交互。

下图是腾讯云和一些竞品的交互数据:
 

2、流畅无卡顿

这是比秒开在直播过程中接到用户反馈更多的核心要素,事实上,影响卡顿的环节很多,包括采集、播放等等,而这其中又分为功能方面和网络方面上的优化。在此,则主要讲的是网络上的优化。其实上行不稳和下行不稳都会造成卡顿,对此,腾讯云从以下几个方面进行解决:一是依托于多年的用户积累,及海外多点部署的服务器,能及时的进行针对性扩容,保证接入。二是采用“三级火箭调控”机制,根据用户卡顿时间进行自适应调整。三是同一事件往往有各个平台的人在进行直播,大家均在竞争网络下进行工作,需要有优异的抢带宽能力,腾讯云基于UDP的传输方案在此时则具有明显优势。

3、低延时连麦

低延时连麦是互动直播中的重点也是最基本的要求,腾讯云同样是基于多年的音视频积累经验,转换了一套解决方案。低延时连麦对音视频的基础能力要求较高,包括对语音的回声消除能力、视频的原音编解码等能力。

说到回声抵消技术,可能有做过IOS开发的同学会说,IOS上自带有回音抵消能力的,为什么不直接用呢?其实,大家真正去用的话,回声抵消真正要做细致的话,需要考虑很多东西。腾讯云在信号对齐、机型设配、音频防抖上都有很大的优势。

此外,我们在视频上针对编解码也做了许多优化,包括视频压缩质量的调节、低码率画面下编码方式的调节等,使得在视频编码的性能和效果上,都有一定的加强。目前已经放开了500多款移动设备的硬件编解码。

4、开放式框架

开放式的框架指的是无论是在采集层还是处理层,可以实现既可以使用我们设定的,也可以自定义,包括自定义实时水印、美颜、音效等,更符合个人需求。

5、运营与网络模拟

作为一个开放的SDK,对于运营能力是非常重要的。当你的SDK接入了几百家的用户,如果没有出色的运营能力的话,你很可能会转变为疲于奔命帮用户解决问题的客服。腾讯云目前的做法是除了提供给用户业界通用的包含每日访问数据、每日卡顿率变化的报表,还提供一个实时的监控系统,可以让用户及时看到访问情况。

另外,我们实行一套网络模拟系统,我们自己在腾讯大厦实验室里面模拟各种托管下、竞争网络下以及运营商网络下的网络环境。现在这一套系统也已经集成在SDK里,可以进行模拟。

讲完这么多,那究竟要接入腾讯云SDK的过程是怎么样的呢?

其实,经过我们的多轮优化,我们现在接入的过程已变得十分简单。下图的8个小框可能仅需要一行代码,如果大家想接入的话,可能从我现在讲完到待会活动结束,Demo就能跑起来了。可能还有人会觉得说自己音视频方面的技能比较差,不是很清楚一些房间之类的概念,我们还提供了一个“随心播”的APP,代码是完全开源的,需要的话直接把代码Copy过去基本上就能正常使用。

谢谢!

【现场互动环节】
【问】:腾讯云视频上对于挂件这一块有没有单独的SDK?
【答】:有的,我们有单独的渠道来接入、开放。
【问】:直播中的接送礼物、结算这一块的SDK有没有公开呢?
【答】:结算的SDK我们没有做的,因为涉及到用户的金融还有用户量等数据,不是很方便去做。一般的直播平台都会自己去做这一块,毕竟涉及到结算的问题。

郭亮的分享PPT下载地址:http://www.oschina.net/doc/44250

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区  [http://www.oschina.net]
本文标题:腾讯高级音视频架构师郭亮:解密互动直播技术
本文地址: https://www.oschina.net/news/77113/decryption-interactive-broadcast-technology

腾讯高级音视频架构师郭亮:解密互动直播技术相关推荐

  1. 如何把在线K歌“玩起来”——专访撕歌音视频架构师程乐

    编者按:在线K歌的业务已经发展了十年,程乐在音视频领域也闯荡了十年,甚至更久.为什么选择在线K歌领域?如何走过"漫长的季节",迎来新的风景?如何在"在线K歌"这 ...

  2. 一站式体验腾讯云音视频及融合通信技术

    对于一款音视频产品,从底层编解码.到传输网络.到平台架构.再到用户终端,无一不决定产品"生死",与此同时,伴随用户数量的提升和对观看体验的不断提高,如何融合AI技术.优化算法.利用 ...

  3. 网易云信亮相 GIAC 全球互联网架构大会,解密新一代音视频架构在元宇宙场景的实践...

    7 月 22 日,2022 GIAC 全球互联网架构大会在深圳隆重召开.GIAC 是中国地区规模最大的技术会议之一,专门面向架构师.技术负责人及高端技术从业人员等人群. 作为互联网技术的年度盛会,大会 ...

  4. 腾讯公司数据平台高级架构师 郭玮:TDW在Hadoop上的实践分享

    腾讯是一个巨无霸公司,我们日常的生活中已与它产生了千丝万缕的联系,不可避免的也产生了海量的数据,如何正确而快速地处理这些海量数据,腾讯数据平台高级架构师郭玮通过发表主题为"TDW在Hadoo ...

  5. 蚂蚁集团高级架构师郭援非:分布式数据库是金融机构数字化转型的最佳路径...

    中生代技术 链接技术大咖,分享技术干货 全文:4500字 2020年8月26-28日,在中科软科技举办的中国财险科技应用高峰论坛上,蚂蚁集团高级解决方案架构师郭援非发表了<OceanBase分布 ...

  6. 【音视频架构演进:边缘计算与云原生】

    在过去的一年中,我们可以看到多媒体特别是音视频技术的能力在严峻的挑战下,为各行各业带来了巨大的变化.疫情过后,又会有哪些多媒体新技术.新实践呈现在大众的视野当中?为行业的发展与应用带来哪些新的趋势与机 ...

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

    作者 | 夕颜 头图 | 下载于视觉中国 出品 | AI 科技大本营(ID:rgznai100) 早在2015年左右,直播和短视频的兴起渗透进普通人的日常生活,人们信息消费的内容已经开始从文字向语音. ...

  8. 【免费活动】解析腾讯云音视频通信三大核心网络技术实战与创新

    随着互联网的发展越来越成熟,移动终端成为我们人手必备的生活用品,云计算的普及与高速发展,4G.5G网络的瓜熟蒂落,我们真正的进入了全真互联网时代.2020年,一场突如其来的疫情,很多传统行业不得不将线 ...

  9. 解析腾讯云音视频通信三大核心网络技术实战与创新

    随着互联网的发展越来越成熟,移动终端成为我们人手必备的生活用品,云计算的普及与高速发展,4G.5G网络的瓜熟蒂落,我们真正的进入了全真互联网时代.2020年,一场突如其来的疫情,很多传统行业不得不将线 ...

最新文章

  1. python utf8_肿么在Python里使用UTF-8编码
  2. 网络监控系统中如何选择工业交换机?
  3. vim 正则非贪婪模式
  4. nyoj 1321信息战(九)——水淹七军(搜索bfs)
  5. java发布rest服务器_ArcGIS Server 10 Java 版的Rest服务的部署方法
  6. 深入了解如何学好C++编程
  7. IE7和IE8的CSS样式不兼容
  8. “大数据杀熟”背后的算法在为谁服务?
  9. 社交电商-京东云小店简介
  10. (转)War3 地图编辑器脚本接口说明
  11. 百度开放大数据平台接口,传统企业看到了新曙光。
  12. wingide运行两个项目_Wing IDE使用教程:部分调试功能介绍
  13. ffmpeg分离视频音频流
  14. html document自动加载,document.html
  15. SSH免密登陆功能配置
  16. 堡垒机和防火墙的区别是什么?能防删库跑路吗?
  17. 性能测试报告,实例讲解
  18. Java代码调试(jer的问题)
  19. 网络语言嗨C,网络流行语大全_最新最热门网络语言
  20. 鞍点计算 C语言 SDUT

热门文章

  1. 索莫菲模型的一些理解 Smomerfeld Model
  2. 【JVM】JVM07(类加载阶段详细解析)
  3. Win11系统电脑节电模式如何打开
  4. VS2015输入反斜杠显示成人民币符号的问题
  5. 网页出现 DNS_PROBE_POSSIBLE问题怎么解决(软件可以使用)
  6. Android仿淘宝淘口令实现
  7. 17.计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度
  8. 基于AlexNet卷积神经网络的手写体数字识别系统研究-附Matlab代码
  9. js 前端实现将json格式数组下载到excel(xls、xlsx、csv)表格里
  10. linux卸载hadoop命令,Hadoop命令 hadoop fs