> 文章列表 > RTC 基础

RTC 基础

RTC 基础

简单的一个框架

一、上行

1.音频

音频采集->3A处理->混合(麦克风+bgm+自定义音频)->编码->fec->打网络包(UDT/QUIC/SRT)->加密->socket发送

2.视频

视频采集->编码->切片->fec->打网络包(UDT/QUIC/SRC)->加密->socket发送

二、下行

1.音频

socket接收->解网络包->解密->送入抗抖动buffer

播放器(播放线程)->获取抗抖动buffer数据包->解码->播放

2.视频

socket接收->解网络包->解密->组视频包->送入抗抖动buffer->送入解码缓存->图片处理->渲染

 

 总结:

音频视频网络部分大致相同,FEC/网络包/加密

在实际场景中,每一个部分都会涉及更多的细节逻辑

比如

1. 编码,音频一般会再opus/aac之间做选择,opus更广泛,更低的编码延迟在实时场景中有更好的表现。视频一般为x264/o264中做选择,但是视频为了获取更好的性能,又会选择硬编硬解,这就又引入了更多的平台相关的技术,更为复杂

2. 因为音视频都是单独传输,接收端又要考虑音画同步问题

3. 视频数据即便是编码压缩后,数据依旧比较大,要考虑加入buffer,做为平滑发送(pacing)的手段

在包括 采集,编解码,网络延迟,播放,每一个部分的延迟都需要纳入考虑范畴