2-7.WebRTC整体架构

那今天呢?我们来讲解一下我们这一章最为最为重要的知识,webrtc架构。

那这两张架构图呢?可以说是我们学习webrtc的一个地图,那我们需要把它印在我们的脑子里,随时可以调出来。去查看我们具体学到了哪些知识,还有哪些知识没有学到,对吧?我们主攻的方向又是哪个?那下面呢?

我们先来看一下webrtc架构图。那通过这张图呢,你可以看到整体分成了四个层次。

那第一个层次呢是接口儿层,在接口儿层中呢,包含了两种接口儿,一种是web端的接口儿,另一种呢是C++接口儿。那Web端的接口儿呢,主要用于浏览器访问,而C++接口儿呢,是我们通过native开发的时候使用的接口儿。那通过这层接口呢,我们就可以调到底层的这个逻辑。这是接口层,

那第二层呢?是session层,session层在webrtc内部啊,是比较薄的一层,那主要包括了呼叫媒体协商这一类逻辑。

那第三层呢?是核心引擎层。在这一层包含的东西啊,就特别多,包括了音频引擎,视频引擎以及传输。我们先来看音频引擎,音频引擎呢,包括了NetEQ,也就是说当我们从网络拿到数据之后,

首先要经过NetEQ进行一个平滑处理。之后呢,会有编解码器opus il bcs class等等,这些编解码器都是在这一层。做管理的,那我们从网络上拿到数据进行平滑处理之后呢?就需要调用解码器。进行解码,解码后的数据呢?要经过3a算法处理之后才能最终播放出来,这就是音频引擎要做的事情。

当然,对于音频引擎来说,远远不止包含这些模块儿,但这几个模块儿呢,是它最为核心的几个模块儿,我们一定要知道。好,再来看看视频引擎,那视频引擎呢,同样也包括了几个模块儿,第一个是jitter buffer,它与音频引擎中的NetEQ呢是类似的,也是对。视频包的平滑处理,当平滑处理完成之后,调用VP 8或VP 9等,这些编解码器进行解码。

最后是图像的增强。当然,对于这一块来说呢,webrtc实现的并不是很强大,这是从网络层到解码层再到渲染。那反过来,我们还可以从底层采集到数据通,过VP 8或VP 9进行编码。最终呢,再传给这个传输层,那传输层包含哪些东西呢?那第一个就包含了sRTP,主要是为了保证我们在通过RTP数据传输的时候呢,它的数据的安全性。那第二个呢,是多路复用,也就是说我们有多路音频视频的时候可以通过一条连接给它传送出去。

这就是多路复用。再下边儿呢,就是p2p,也就是端与端之间的连接,那这里边儿呢,用了很多的技术,其中比较关键的是net穿越。那当我们这一层结束之后呢?最后一层就是设备层,那设备层包括了音频的采集网络以及视频的采集与渲染。

它们都属于设备层。那像我刚才所说的,如果我们的数据是从网络上传过来的,它首先。传到p2p之后呢,再向上传一步一步,再分给视频引擎或者是音频引擎。那音频引擎呢,通过NetEQ进行平滑处理。视频引擎呢,通过jitter buffer进行平滑处理之后解码儿。

这个渲染。那反过来,如果我们的数据。是要发送出去,那首先是设备层进行采集,采集之后进行编码,经过一个缓冲之后呢?进入到这个传输层,传输最后通过网络再发送出去,

这是它的一个大体的流程。OK,那通过这张图啊,我们就知道我们webrtc。包含了哪些东西对吧?那首先呢,你要有对外的接口儿层,那所有的接口儿呢,都是在这一层创建的。筛选层我们的一些逻辑是在这一层。

核心引擎层包括了包括了音频引擎,视频引擎以及传输。最后是通过设备层,我们才能将网络数据发送出去,或者是从网络上接收数据。

而对于音频,视频的采集和渲染,也是在这一层完成的。OK,这是webrtc的整体架构好,下面我们来看一下webrtc的数据流转,那对于整个数据流转呢?

实际是包含了两部分。对于一个直播客户端,它包括了发送侧和接收侧,那接收侧呢,就是从网络上接收数据,而发送端呢?就是将数据准备好之后呢?通过网络发送出去,

当然在它内部,实际它是。两侧都要包含的,对吧?你既要接收数据,又要发送数据,所以在内部呢?发送端与接收端之间还有很多的联系,也就是在这一块儿。

那一会我们都会介绍到。那下面我们就来看看整个儿数据流转的过程,那首先我们从发送侧开始看起,对于发送侧来说呢它。它必须包含视频的数据采集和音频的数据采集,那对于视频数据采集来说呢,它需要把一路数据传给本地渲染,把这个展示出来。

需要把采集到的数据呢,交由编码器进行编码,那音频呢,交由音频编码器编码视频呢,交由视频编码器编码。那编码之后呢,就会打成rtb包,通过平滑处理,最终呢,通过网络分发出去。那再来看接收侧,那接收侧从网络上收到数据之后,

需要把这个内容呢分成两种,一种是RTCP包,一种是RTP包。RTCP包儿呢是用于控制RTP包儿的,而RTP包儿里边儿存放的呢都是媒体数据,包括了音频和视频。所以对于RTP包来说,还要拆分拆分成音频包和视频包,分别放到不同的缓冲区中。对于音频包呢,是放到NetEQ里。而对于视频包儿呢,是放到jitter buffer里NetEQ中呢,又包含了音频的解码器,那解码完了之后呢,

进行播放。而视频呢,通过jitter buffer送视频解码器,最后渲染是这样一个过程。当然,音频与视频之间呢,还要进行一个同步。这是大体的流程,之后我们再细化啊,对于RTCP来说,那他收到这个数据。会送给谁呢?会送给这个流控模块儿,在这个流控模块儿中啊,会有对带宽的处理,

那流控呢,首先要计算带宽带宽是通过多种方式。计算出来的一种呢,是基于丢包的带宽计算,那还有一种呢,是基于延迟的计算,基于延迟的机制呢,又包括TCC和REMB。那对于这两种方式呢,我们后边再做详细介绍,那当我们把当时的带宽计算出来之后呢,就可以通过流控来控制我们当前。传输的速率了,如果我们当前的速率高于我们现在带宽,那这个时候就要。

控制两个方面,一个方面呢,是我们的编码器要减少码流的输出,而对于平滑处理来说呢。要减少数据的发送量,这样才能真正将数据控制下来。那除了流控之外呢,还有回音消除。我们经过解码之后,需要把这个原始数据啊,输送到这个缓冲区中,那么最后呢,再由采集端根据这个信号儿。然后进行回音消除,这就是我们整个数据流转的一个大体的流转图,

所以这两张图啊,都是非常关键的,一个是让我们知道整个webrtc。它是怎样设计的?另外一个呢?是让我们知道整个数据流的流转是怎样一个大体的过程,那么有了这两张图之后呢?我们在去学习webrtc相关内容的时候,就知道我们学习的路径是什么,我们该如何学。那以上呢,就是我们这节课所要介绍的内容,那这节课中呢,我主要向你介绍了两张图,第一张图呢是webrtc架构图,

第二张图呢是webrtc数据流转图。这个两个图是特别特别关键的,一定要印在你的脑子里,那这样呢,才能对我们后面的学习呢,提供更大的帮助。那我们今天的课呢,就到这里,谢谢。

如有侵权,请联系我删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值