1

字节跳动《实时音视频通讯技术》学习笔记之RTC概述及技术简介

 2 years ago
source link: https://juejin.cn/post/6994226146711715877
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

什么是实时音视频

实时音视频(RTC)即基于IP技术实现的实时交互的音视频通信技术。

RTC 与 直播常用协议的区别

直播协议播放延迟FLV3s-5sRTMP3s-5sHLS10s+

而这里我们要使用的RTC技术就厉害了~

它是基于IP技术的,它的延迟低于400ms,RTC传输的内容是音视频数据。

实时音视频应用场景

  • 音视频通话

    • 1V1,多人音视频通话

      可以美颜、使用道具等等。

    • 支持设备差异性大

      网路接入经常切换

因为这种产品主要是面向用户的,不同用户使用的设备的差别比较大。根据不同设备需要做不同的优化。这就是为什么我们说支持设备差异性大。

而在实际情况中,经常遇到移动网络4G、5G切换WIFI,或者基站之间的切换。这些导致网络环境的变化需要中断重连。

下面介绍两种场景:抖音直播和直播连麦。

    • 产品功能Ⅰ

    • 技术特点Ⅰ

      • 主播段推流
      • 观众端CDN拉流
    • 产品功能Ⅱ

      • 多个主播同框互动,观众围观实况
      • K歌、游戏互动、互动交流
    • 技术特点Ⅱ

      • 服务端&客户端合流

直播连麦将多个主播的视频流合流然后发送给观众。这种合流一般是在服务端做的,但是现在由于客户端的性能不断提高,现在出现了将合流放在客户端的情况,这样节约了成本。

我们都知道传统直播技术的延迟比较高,从观众评论到看到主播反馈一般要5-10秒以上,那么这样在教育直播、电商直播、体育直播等直播就会出现一些问题。

前面我们提到RTC能够实现低延迟的实时传输音视频流,那么RTC可以应用在直播场景吗?

答案是是,因为只要我们将基于TCP的网络传输协议转化为基于UDP的RTC就行了。

那为什么我们不一开始就使用RTC呢?

第一因为成本,CDN的成本是RTC的三分之一,RTC的部署是比较消耗资源的。

第二是因为RTC是需要做很多网络的优化的,比较复杂。

普通直播替换为低延时直播的方案

拉流端(播放端)替换为RTC:收益大。

因为观众端的延时比较大,所以一般是从观众端替换为RTC。

推流端(主播端)替换为RTC:收益中。

因为主播网络环境一般还不错,所以不优先考虑主播端。

RTC应用场景:在线教育

  • 一对一教育

      • 1V1 教学
      • 白板、课件
      • 音视频通话类似
      • 可能需要跨国

    要求和音视频通话一样,需要及时反馈,需要低延迟,跨国一对一可能物理距离较远,导致延迟可能较高。

      • 白板、课件

大班课技术难度比1V1教育低,因为一般情况下只是老师一个人推流,不存在过多互动。总的来看,大班课互动性较差,学习体验可能不是很好。

于是,小班课就产生了,它有较强的互动性,但是其难度最大,比1v1教育难度要高。因为每个人网络环境不一样,需要给不同用户下发不同码率的视频。

      • 白板、课件
      • 多人发布与订阅

RTC使用场景:视频会议

  • 飞书视频会议

      • 百(千)人视频互动
      • PSTN接入
      • 背景虚化,美颜...
      • 多人音视频互动
      • 接入设备多样性

总体来说,视频会议的技术难度较大,对音频降噪的要求比较高,同时存在PSTN接入的情况。

RTC使用场景:游戏

      • 低延迟、低耗能、流量小

因为游戏比较耗计算机资源和网络资源,又要求低延迟。所以需要达到低延迟、低耗能、流量小。

      • 游戏运行在服务端
      • 客户端渲染、控制
      • 海量控制指令

这样即使设备性能不高也能实现尝试高性能的游戏。适用于大型游戏和游戏试玩。

因为需要良好的游戏体验,就需要超低延迟。而且因为我们RTC可以传输海量的控制指令,所以可以用于云游戏。

实时音视频技术概览

RTC系统架构图

信令是一些控制指令,信令服务器可以用于呼叫、协调。

合流转推等等这些操作是后处理服务器来完成的。

客户端是音视频通话的终端,我们来看看客户端整体技术架构。

QoS是保证在弱网的情况下仍然能够使用。

事件上报是因为任何的日志都需要上传,可以处理错误和进行性能优化、算法改进。

  • 全平台支持

低性能的设备使用低性能的算法。

同时支持WIFI、4G就需要实现多径传输。

采集到音视频等数据需要进行编码压缩然后通过网络传输,然后解码播放。

信令服务器

信令:为使网络中各种设备协调运作,在设备之间传递的控制信息。

信令服务器:就是用来传输、中专信令的服务器。

    • 全球化部署
    • 信令到达率
    • WebSocket
    • 自定义协议

媒体服务器

媒体服务器:在终端用户之间中转音视频流,进而让用户之间可以进行音视频通信。通常部署在边缘,距离用户较近的地方。

Simulcast&SVC是根据不同用户的网络状况提供不同码率、帧率的视频。

BWE&拥塞控制是用来估计用户的可用带宽,来判断给用户发送多大码率的码流。

下面来看看几种媒体服务器的典型架构:

  • 音视频录制
  • 截图、切片

还有什么?

  • 自动化测试
  • 应用场景探索

需要数据才能优化,视频是否清晰,音频是否悦耳这就需要质量评估。

自动化测试和质量评估也是比较重要的。

去探索新的应用场景也是非常重要的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK