龙空技术网

WebRTC入门与实战 --- WebRTC原理与架构

Linux特训营 736

前言:

目前大家对“虚线web”大约比较讲究,同学们都想要学习一些“虚线web”的相关文章。那么小编也在网上网罗了一些关于“虚线web””的相关资讯,希望同学们能喜欢,兄弟们一起来学习一下吧!

webrtc入门与实战视频培训课程是通过老师多年经验总结出的一套webrtc入门教程,学完你能搭建出一套android互通或者web互通或者android对web互通的webrtc服务器,此教程由浅入深讲解了从编译到完整搭建一套webrtc demo,包括apprtc房间服务、collider信令服务、coturn穿透服务,即便你没有linux基础也能搭建,让你轻轻松松入门。

需要资料的后台可以私信《资料》两字可以免费领取资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,WebRTC,ffmpeg 嵌入式 等。

架构图颜色标识说明:

(1)应用层:紫色部分是Web开发者API层;

(2)核心层:蓝色实线部分是面向浏览器厂商的API层(也就是红色框标内模块,也是本人专注研究的部分)

(3)核心层:蓝色虚线部分浏览器厂商可以自定义实现

WebRTC架构组件介绍

(1) Your Web App

Web开发者开发的程序,Web开发者可以基于集成WebRTC的浏览器提供的web API开发基于视频、音频的实时通信应用。

(2) Web API

面向第三方开发者的WebRTC标准API(Javascript),使开发者能够容易地开发出类似于网络视频聊天的web应用,最新的标准化进程可以查看这里。

(3) WebRTC Native C++ API

本地C++ API层,使浏览器厂商容易实现WebRTC标准的Web API,抽象地对数字信号过程进行处理。最主要的包括PeerConnection,音视频传输,非音视频数据传输等为数不多的接口,降低应用层开发难度;

(4) Transport / Session

传输/会话层,也就是上下文管理层,管理音视频。非音视频等数据处理逻辑;

a. RTP Stack协议栈

Real Time Protocol

b. STUN/ICE

可以通过STUN和ICE组件来建立不同类型网络间的呼叫连接。

c. Session Management

一个抽象的会话层,提供会话建立和管理功能。该层协议留给应用开发者自定义实现。

(5) VoiceEngine

音频引擎是包含一系列音频多媒体处理的框架,包括从视频采集卡到网络传输端等整个解决方案。

PS:VoiceEngine是WebRTC极具价值的技术之一,是Google收购GIPS公司后开源的。在VoIP上,技术业界领先,后面的文章会详细了解,现在音频编解码方面用的最多的是OPUS、AAC。

a. iSAC

Internet Speech Audio Codec

针对VoIP和音频流的宽带和超宽带音频编解码器,是WebRTC音频引擎的默认的编解码器

采样频率:16khz,24khz,32khz;(默认为16khz)

自适应速率为10kbit/s ~ 52kbit/;

自适应包大小:30~60ms;

算法延时:frame + 3ms

b. iLBC

Internet Low Bitrate Codec

VoIP音频流的窄带语音编解码器

采样频率:8khz;

20ms帧比特率为15.2kbps

30ms帧比特率为13.33kbps

标准由IETF RFC3951和RFC3952定义

c. NetEQ for Voice

针对音频软件实现的语音信号处理元件

NetEQ算法:自适应抖动控制算法以及语音包丢失隐藏算法。使其能够快速且高解析度地适应不断变化的网络环境,确保音质优美且缓冲延迟最小。

是GIPS公司独步天下的技术,能够有效的处理由于网络抖动和语音包丢失时候对语音质量产生的影响。

PS:NetEQ 也是WebRTC中一个极具价值的技术,对于提高VoIP质量有明显效果,加以AEC\NR\AGC等模块集成使用,效果更好。

d. Acoustic Echo Canceler (AEC)

回声消除器是一个基于软件的信号处理元件,能实时的去除mic采集到的回声。

e. Noise Reduction (NR)

噪声抑制也是一个基于软件的信号处理元件,用于消除与相关VoIP的某些类型的背景噪声(嘶嘶声,风扇噪音等等… …)

(6) VideoEngine

WebRTC视频处理引擎

VideoEngine是包含一系列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示整个完整过程的解决方案。还有H264、openH264等。

a. VP8

视频图像编解码器,是WebRTC视频引擎的默认的编解码器

VP8适合实时通信应用场景,因为它主要是针对低延时而设计的编解码器。

PS:VPx编解码器是Google收购ON2公司后开源的,VPx现在是WebM项目的一部分,而WebM项目是Google致力于推动的HTML5标准之一

b. Video Jitter Buffer

视频抖动缓冲器,可以降低由于视频抖动和视频信息包丢失带来的不良影响。

c. Image enhancements

图像质量增强模块

对网络摄像头采集到的图像进行处理,包括明暗度检测、颜色增强、降噪处理等功能,用来提升视频质量。

(6) Transport

底层用的UDP,上层用的RTP/SRTP、RTCP

Multiplexing,复用,多个流复用同一个通道,

下边最后一层是与硬件相关的,这三个模块都是可重载的,增加灵活度,Chrome就用的自己的音视频渲染,介绍如下:

(7) Audio Capture/Render

音频的采集与渲染

(8) Video Capture

视频采集,这里没有视频的渲染,这个需要应用层自己去做

(9) Network I/O

网络I/O


需要资料的后台可以私信《资料》两字可以免费领取资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,WebRTC,ffmpeg 嵌入式 等。

标签: #虚线web