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)