1. 首页>
  2. 腾讯云代理

音视频融合通信技术的最佳实践

腾讯云 2019年07月17日 浏览83

    腾讯云代理 腾讯云新闻 腾讯云代理 腾讯云直播申请 游戏上云

摘要:

6 月 29 日,云 + 社区主办的技术沙龙 -“音视频及融合通信技术”在北京成功举办,腾讯云经过多年的技术沉淀,并结合自身的最佳实践,引领了现场近 300 位开发者关于“音视频”技术的不一样的思考。

以下为本次沙龙的现场演讲摘要:

1移动直播连麦技术实践

首先聚焦在直播场景下,在当前这个全民直播的时代,连麦逐渐成长为直播领域非常重要的业务场景之一,但是网络往往是不稳定的,那么如何在网络不可控及弱网的情况下来保证高质量的连麦通讯服务呢?腾讯高级工程师蒋磊现场为大家阐述了腾讯在这方面的最佳实践。

连麦直播概述

连麦直播与普通直播的区别在于,后者类似单口相声,一个直播表演很多观众看;连麦直播是对口相声和群口相声,有大主播和小主播,普通观众看大主播和小主播的画面。

(连麦基本原理)


不过往往理想很美好,现实却很骨感。在技术实现上并非嘴上说说就可以了,连麦直播通常会遇到这三类问题:延时、回声和混流。

延时

普通直播的延时主要来自于转码处理过程中产生的百毫秒级别的延时,以及 CDN 延时。

因为 CDN 回源的工作机制,在 H.264 这种 GOP 编码方式下,回源必须拿到 GOP 的 I 帧(关键帧)才能分发。通常情况下 CDN 引入的延时就有 1-3 秒,因此要解决普通直播引入的延时,最好的解决办法就是不走 CDN。

解决办法就是使用 UDP 协议,由主播端推流到 upload,upload 拉流至 rtmp-acc 节点,然后小主播再从 rtmp-acc 节点获取数据,同样的,小主动将将流推到 upload 上并让大主播从 rtmp-acc 上拉。内部都走高速专线,所以整体延时会很低。通过 UDP 加速这样的方式,可以实现大主播到小主播之间 500 毫秒以内的延时。

当然还有一部分延时来自网络。网络总是处于波动的状态,或多或少会有丢包的情况出现。这里的解决方案就是通过 jitterbuffer 这样的蓄水池平滑数据流来实现。因为网络传输过程中会有不均匀的抖动,数据会在 jitterbuffer 缓存一下再给到解码器,在实际直播里可以将 jitterbuffer 设置在 200 毫秒左右,但是这样又需要处理 jitterbuffer 累积延时问题。因为技术上通过 jitterbuffer 实现了缓冲,但客观上网络还是抖动的,而 jitterbuffer 这个“蓄水池”只有蓄满了才会往下一步送数据,所以一旦网络一直抖动,延时就会不断增加,为了解决这个问题我们就必须要修正累积的延时。在腾讯云的 LiteAVSDK 中,播放器已经做好的累积延时的修正。

回声

回声是另外一个最常遇到的问题,回声通常会分为两类,第一类是线路回声,一般由硬件厂商自己解决;另一类就是声学回声。

声学回声的原理是什么?当原声传到对方扬声器播放之后,被对方的麦克风再采集一次,通过通信线路传回来再次播放,大主播就会听到自己的声音。而且人的耳朵特别灵敏,超过 10 毫秒以上的回声就能被分辨出,而通信线路的延时往往在 50 毫秒以上,因此回声必须要做消除。

依上图所示,为了解决回声,将播放器播放的音频数据与麦克风采集的音频数据进行波形比对,反向把波形消掉,这个过程就叫 AEC。腾讯云已经 AEC 功能在 LiteAVSDK 中内置,开发者无需再额外编程,可以直接使用。

画面混合

画面混合分为客户端与云端,客户端即大小主播相互之间要看到的画面,有两个部分,一个是自己本地的预览,另一个是拿到的对方数据画面。本地预览相对比较简单,只要播放器支持多实例就可以搞定了。

在云端,混流的模块从 upload 拿到数据之后按照设定的参数分层叠加,再通过 CDN 分发,就是云端混流。云端混流可以极大减轻客户端播放的压力。腾讯云可以同时最大支持 16 路混流,输入源可以是纯音频、视频、画布和图片。

腾讯云连麦直播实践 --MLVBLiveRoom

在过去的几年里腾讯云使用了非常多的技术手段来解决连麦中遇到这些问题,并且将这些技术方案打磨好,实现了 MLVBLiveRoom 方案。


MLVBLiveRoom基于LiteAVsdk+IMSDK,结合腾讯云云直播和云通信 IM 服务,从普通的直播,到连麦直播、跨房 PK 都在一个组件里直接搞定;通过在腾讯云的云端提供的房间管理服务,普通开发者不需要再考虑过多房间状态和房间管理的细节;同时基于优图实验室的 P 图技术可以实现人脸 AI 特效及视频动态特效;并且它的接入做得足够简单,普通开发者半天时间就可以跑通整个流程。


除此之外,MLVBLiveRoom 通过仪表盘数据把底层的音视频数据回调给开发者,开发者可以通过 onNetStatus 拿到直播过程最直接的数据,从而更方便地实现线上业务的监测与运维。

除了 MLVBLiveRoom 之外,为了解决连麦直播中普通观众的上下麦平滑切换问题,腾讯云还实现了TRTC 低延时大房间的方案,让主播和观众们都统一加入到同一个低延时大房间里面,每一个用户都通过 UDP 的方式推流和播放,这种方式可以实现极低延时,主播之间最低可以到 100 毫秒,普通观众的延时可以控制在 1000 毫秒以内。

2腾讯云直播 PCDN 加速方案

直播场景音视频的流畅度直接关系到用户的体验感受。腾讯云 P2P 是业内领先成熟的 P2P 产品,其中多个产品线已经成熟,现在已经推广到斗鱼、企鹅、电竞、英雄联盟等各个不同的平台。云 + 社区技术沙龙请到了腾讯 XP2P 负责人张鹏现场为开发者带来了《腾讯直播 PCDN 加速方案》的分享。


XP2P 简介

P2P 简单而言,就是你有我有大家都有的东西,我们可以通过网络相互连接来分享之。P2P 架构体现了互联网架构的核心技术,因此这种概念被描述在 RFC 1 里面,可谓由来已久,是早期互联网建设者心中最梦寐以求的架构。从 2014 年到现在经历了 5 年的打磨完善,产品也非常的稳健成熟,覆盖 Android、IOS、H5、PC 等各种平台,它有更多的节点进行加速,延迟也是等同于 CDN 甚至优于 CDN 的起播速度,在 S8 赛事期间峰值达到 8T,经历了大规模的直播活动的检验,同时也见证了 flash 由盛转衰的过程。

XP2P 产品功能

腾讯云 XP2P,是为了满足直播需求的带宽和延迟而开发出来的。技术上,首先 P2P 所有的节点都要有数据一致性。对于视频来说就涉及到视频流的切片。过去的技术是无法在原始直播流上进行切片的,现在切片操作对直播流无任何损害,完全不修改它里面的 mux 信息和 codec 信息。

这种方式跟 FLV 流合成一体,P2P 的数据可以直接交给播放器,对视频内容的侵入性可以做到非常完美。用这样的方式还可以实现自适应码率,是比 HLS、Dash 还要领先的技术。

P2P 的客户端首先要做穿透。当前的互联网有 NAT(网络地址转换),就是说公网地址不够,局域网上用内网地址在发送请求的时候,加一个断口标识这个请求。这带来的一个问题是 A 知道 B 的地址但是无法连接,会直接被 NAT 阻止。

STUN 协议是 P2P 打洞建立起连接的核心协议。进入互联网之后之后 STUN 有一个连接图。首先向 STUN 公网连接,如果没有收到则说明对方有防火墙,如果收到了就可以看公网地址和内网地址是否一样,如果一样说明前面没有 NAT,它是公网地址。接下来向服务器发一个包,让服务器换一个 IP 地址给我回包,如果收到的话就是一个真正的公网地址,如果没收到是因为前面有一个防火墙。

如果公网地址跟内网地址不一样,说明里面有一个 NAT。首先请求原来的服务器换一个地址回消息。如果这个消息收到了就是公网地址,收不到的话说明是一个限制性的,或者对称型的。接下来就是由 STUN 再去请求,注意这个请求是用同一个内网请求,然后看返回的地址和第一次返回的官网地址是否一样,如果不一样的话就是对称型的;如果一样接下来需要再探测是 ID 限制型还是端口限制型,然后再朝这个服务器换一个端口回消息,如果能收到就是 ID 限制型,如果收不到消息就是端口限制型。


做 P2P 的时候不应该探测带宽,因为这会发很多包,对带宽来说是一种浪费,所以应该使用自然探测。还有一点,P2P 要使用 TCP 剩下的带宽,要公平竞争,而不是肆意抢占 TCP 带宽。因为 TCP 存在着启动慢、拥塞控制差、抗抖动差、重传歧义等问题,相比之下 XNTP 就具有快速启动、基于合理建模的数学公式的速率控制、以及丢包率反馈传输速率、双序号包索引等优势。


XNTP 的 Pacing 发送可以选择均匀发送,一个 RTT 是 40 毫秒,发 40 个包,每一毫秒发一个包,这样对路由器非常均匀,就可以更少丢包的同时把网络利用上去。

XP2P 的应用场景

对于 P2P 的应用场景,无论是直播、点播、文件都是适用的,文件适合大文件的分发。对于 4K 视频加速,有 P2P 的助力,4K 体验会更胜一筹。尤其对于大型直播活动比如说赛事、春节联欢晚会,是非常适合 P2P 来提高质量节省带宽的。对于短视频、常规视频,更是 P2P 加速的强项。对于大规模、大文件的分发也可以用 P2P,其原理类似点播视频的 P2P。P2P 接入也非常简单,先是注册腾讯云在云官网开通,通过腾讯云的官网下载 SDK 并接入,虽然不似某些云厂商吹嘘的一行就接入,但是花个 10 行,也是能够完美接入的,然后测试上线然后运维,非常简单,还会有专人对接。

XP2P 的未来与展望



腾讯云 X-P2P 某种意义上实现了多播协议,即优化了网络质量,又降低了网络的负载;而 456(4K、5G、IPv6)的到来,将会使 X-P2P 进一步发挥能力和得到更广泛的应用;区块链的底层所使用的 P2P 技术和腾讯云 X-P2P 有异曲同工之妙,然而 libp2p 除了搞了一堆不必要的概念,还没有看到怎么接触到穿透的核心技术;边缘计算也将依赖稳健、安全、高效的 P2P 技术底层;XNTP 传输协议如果再优化一下,甚至将可以和 quic 相提并论;最终,X-P2P 可能回归最初的梦想,在互联网上产生出彻底去中心化的服务模式。




相关文章

在线客服
淘宝购买
腾讯云直播申请 title=
+成为腾讯云VIP客户 腾讯云直播申请 客服电话

15818558013

0755-33940501-803

0755-33940501-808