WebRTC音视频开发之——概述-整体框架(2)

一 概述

  • WebRTC整体架构图
  • 不同开发人员对整体架构图的关注点
  • WebRTC涉及内容

二 WebRTC整体架构图

WebRTC目前已经形成了一个HTML5的规范。由W3C组织来指定并维护这个标准,其总体架构图如下

三 不同开发人员对整体架构图的关注点

3.1 Video Conference、Video Call、Remote Education

  • 这部分为应用层
  • 指具体的音视频应用,是应用开发人员最关注的

3.2 Web API(W3C组织)

  • 这部分是Web应用开发者API层
  • 为上层应用层提供API服务,是应用开发者调用的接口

3.3 WebRTC C++API(PeerConnection)

  • 这部分是面向浏览器厂商的API层

3.4 Session Management/Abstract Signaling(Session)

  • 这部分为信令管理层,可由开发者自行定义实现

3.5 Transport、VideoEngine、VoiceEngine

  • 这部分为WebRTC的核心内容
  • 可由WebRTC的应用SDK厂进行优化处理

3.6 Audio/Video Capture

  • 这部分内容可供浏览器厂商自定义实现

四 WebRTC涉及内容

4.1 Web应用

Web开发者可以基于Web API开发基于视频、音频的实时通信应用,如视频会议、远程教育、视频通话、视频直播、游戏直播、远程协助、互动游戏、实时人脸识别、远程机械手操作等

4.2 Web API

Web API是面向第三方开发者的WebRTC标准API(JavaScript),使开发者能够很容易地开发出类似于网络视频聊天的Web应用,最新的技术进展可以参考W3C的WebRTC文档https://www.w3.org/TR/webrtc/,常用的 API如下所示:

  • MediaStream:媒体数据流,如音频流、视频流等
  • RTCPeerConnection:该类很重要,提供了应用层的调用接口
  • RTCDataChannel:传输非音视频数据,如文字、图片等

WebRTC的API接口非常丰富,更多详细的API可以参考网址:https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API,该文档提供了中文说明

4.3 C++ API

  • 底层API使用C++语言编写,使浏览器厂商容器实现WebRTC标准的Web API,抽象地对数据信号过程进行处理。
  • 如RTCPeerConnection API是每个浏览器之间点对点连接的核心
  • RTCPeerConnection是WebRTC组件,用于处理点对点间数据的稳定和有效通信

4.4 Session Management

  • Session Management是一个抽象的会话层,提供会话建立和管理功能
  • 该层协议留给应用开发者自定义实现
  • 对于Web应用,建议使用WebSocket技术来管理信令Session
  • 信令主要用来转发会话双方的媒体信息和网络信息

4.5 Transport

  • Transport为WebRTC的传输层,涉及音视频的数据传输、接收、网络打洞等内容
  • 可以通过STUN和ICE组件来建立不同类型的网络间的呼叫连接

4.6 VoiceEngine

VoiceEngine(音频引擎)是包含一系列音频多媒体处理的框架,包括从音视频采集到网络传输端等整个解决方案。VoiceEngine是WebRTC极具价值的技术之一,是Google收购GIPS公司后开源的,目前在VoIP技术上处于业界领先地位。下面介绍主要的模块:

ISAC(Internet Speech Audio Codec)

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

  • 采样频率:16kHz,24kHz,32kHz(默认16kHz)

  • 自适应速率为:10kbps~52kbps

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

  • 算法延时:frame+3ms

  • ILBC(Internet Low Bitrate Codec):是VoIP音频流的窄带语音编解码器,参数如下

    • 采样频率:8kHz
    • 20ms帧比特率为15.2kbps
    • 30ms帧比特率为13.33kbps

NetEQ For Voice

  • 是针对音频软件实现的语音信号处理单元。
  • NetEQ算法是自适应抖动控制算法以及语音包丢失隐藏算法,该算法能够快速且高解析度地适应不断变化的网络环境,确保音质优美且缓冲延迟最小,是GIPS公司独特的技术,能够有效地处理网路抖动和语音包丢失时对语音质量产生的影响。
  • NetEQ也是WebRTC中一个极具价值的技术,对于提高VoIP质量有明显效果,与AEC、NR、AGC等模块集成使用效果更好。

Acoustic Echo Canceler

  • Acoustic Echo Canceler,简称AEC,回声抑制
  • 是一个基于软件的信号处理元件,能实时地去除Mic采集到的回声

Noise Reduction

  • Noise Reduction,简称NR,噪声抑制
  • 也是基于软件的信号处理元件,用于消除与相关VoIP的某些类型的背景噪声(如嘶嘶声、风扇噪音等)

4.7 VideoEngine

VideoEngine是WebRTC视频处理引擎,包含一系列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示,是一个完整过程的解决方案。下面介绍主要模块:

VP8(视频图像编解码器)

  • VP8是视频图像编解码器,也是WebRTC视频引擎默认的编解码器
  • VP8适合实时通信应用场景,因为它主要是针对低延时而设计的编解码器
  • VPx编解码器是Google收购ON2公司后开源的,现在是WebM项目的一部分
  • WebM项目时Google致力于推动的HTML5标准之一

Video Jitter Buffer(视频抖动缓冲器)

  • Video Jitter Buffer:视频抖动缓冲器
  • 该模块可以降低由于视频抖动和视频信息包丢失带来的不良影响

Image Enhancements(图像质量增强)

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