WebRTC

发布时间 2023-12-14 11:59:15作者: 不会笑的孩子

WebRtc的整体架构

100多行代码 总---分--总

直播的由来

  • 音视频的起源:千里眼与顺风耳

  • 1876年贝尔发明了电话

  • 1872 "奔跑的马"

  • Webex与Adobe

  • Adobe创造了传统直播:传统直播:直播购物、娱乐直播、游戏直播

  • 实时互动直播:音视频会议、在线互动课堂

  • GIPD的独门秘籍

传统直播与实时互动直播

传统直播

  • 目标:一个讲多人看延时大

  • 时延:平均3秒

  • 传输协议:TCP/RTMP/HLS

  • 开源库:ffmpeg

  • 推拉流:OBS/ffmpeg

  • 浏览器支持:flv.js

  • 服务器:CDN/nginx/srs

  • 丢包: 多次重传、知道断连

  • 实现难度:小

  • TCP的APC机制与TCP重传超时退避机制

实时互动直播

  • 目标:多人互动,实时性高

  • 时延:平均500毫秒以下(视频) 音频:MOS值(0~5分割符0.5) PESQ ITU-T P2 POLQA

  • 需要解决回音问题

  • 传输协议:UDP/RTP/RTCP

  • 推拉流:WebRTC

  • 浏览器:各种终端基于WebRTC

  • 服务器:声网/mediasoup

  • 实现难度:实时性要求高、网络质量(tcp/udp) 音视频服务质量(丢包)与实时性之间有矛盾

  • 带宽:TCC、Goog-REMB

  • 丢包:重传+FEC

  • 解决回音、噪音等问题。
    发送端:音频采集-->回音消除--->降噪-->增益--->音频编码--->网络发送--->
    接收端:网络接受-->回音消除(NetEQ)--->音频播放

直播的技术方向

实时互动直播的难点

实时互动直播的几个重要指标

为什么要选择WebRTC

WebRTC整体架构

WebRtc源码分析环境的搭建

开启WebRTC源码分析之路

深入理解WebRTC线程

WebRTC媒体的实现

WebRTC音频数据的采集

WebRTC视频数据的采集

WebRTC音频音频

WebRTC视频引擎

深入理解WebRTC的网络传输

深入理解WebRTC服务质量(Qos)

WebRTC中NetEQ的实现

Simulcast与SVC

数据的安全性

网络质量

音视频引擎

3A模块

  • 支持回音消除、降噪和自动增益

  • 将传统算法用到了极致

  • 不仅支持软件方法还支持硬件方法

安全性

  • 通过动态分配用户名/密码保证用户的有效性

  • 通过指纹保证证书的真实性

  • 通过DTLS-SRTP对数据进行加密

  • 还支持端到端数据加密

跨平台

优秀的架构设计

网络模块

  • 保障数据传输的实时性(<500ms)

  • 可以实时准确的评估出带宽大小(REMB、TCC)

  • 优秀的防拥塞控制算法(GCC)

  • 保障网络带宽使用的公平性(TCP、GCC)

  • 抗丢包(NACK、FEC)

  • 防抖动、防乱序(JitterBuffer、NetEq)

  • 可以传输各种数据(音视频、文本、二进制数据)

强大的音视频引擎

  • 支持多种音视频编解码器(AV1/VP9/VP8、OPUS/ISAC)

  • 采用了最先进的音视频编解码器(AV1、OPUS)

  • 多种音视频格式可以互动(VP8、H264)