Skip to content

Latest commit

 

History

History
334 lines (174 loc) · 8.83 KB

百万级高并发WebRTC流媒体服务器设计与开发.md

File metadata and controls

334 lines (174 loc) · 8.83 KB

第 1 章 课程导学与准备工作

李超

 本章主要介绍为何要学习WebRTC流媒体服务器开发,以及本门课能为我们带来哪些收获。之后会为大家介绍本课程内容具体安排,最后给出如何学好这门课程的一些学习建议。希望大家都能通过这门课程,学有所成,学有所归。

1-1 课前必读(不看会错过一个亿)

1-2 导学 试看

第 2 章 C++语言基础回顾【已掌握,可略过】

为了便于大家更好的学习流媒体服务器的开发,本章将带大家对 WebRTC 服务器开发中用到的 C++基础知识进行回顾梳理,如类的定义与使用,继承,多态,名存空间等相关知识。

2-1 C++知识回顾之 helloworld

2-2 类的定义和实现

2-3 类的使用

2-4 命名空间

2-5 继承 1

2-6 继承 2

2-7 多态

2-8 内存地址空间与指针

2-9 堆空间与栈空间

2-10 深拷贝与浅拷贝 试看

第 3 章 服务器基础编程

本章将带你学习最基础的服务器开发,让你体会服务器开发其实如此简单。

3-1 一个最简单的服务器 试看

3-2 Linux 系统下的信号

3-3 几个重要的信号

3-4 信号的发送与处理

3-5 通过 sigaction 安装信号

3-6 以 fork 的方式创建后台进程

3-7 以 daemon 方式切换到后台

第 4 章 网络编程基础

本章将带你了解如何在服务端开发网络服务器程序。

4-1 TCPServer 实现原理

4-2 TCPServer 的实现 1

4-3 TCPServer 的实现 2

4-4 TCP 客户端的实现

4-5 作业-UDP 服务端与客户端的实现

4-6 作业-实现一个 TCP/UDP 网络服务器

第 5 章 异步 I/O 事件处理

本章将带你掌握异步 IO 事件处理原理。

5-1 通过 fork 的方式实现高性能网络服务器

5-2 通过 select 实现高性能服务器

5-3 再论 select 函数

第 6 章 epoll 实现高性能服务器

本章将带你学习 Linux 下最高效的异步 IO 事件处理函数 epoll 的使用。

6-1 epoll 基本知识

6-2 epoll 高性能服务器的实现 1

6-3 epoll 高性能服务器的实现 2

6-4 epoll+fork 进行性能优化

第 7 章 libevent 实现高性能网络服务器

本章将带你了解几个比较著名的开源事件处理库,epoll 使用起来比较复杂,很多开源项目对 epoll 进行了封装,如 libevent、libuv 等,本章还会传授你如何提高开发网络异步 IO 服务器的效率。

7-1 比较有名的异步 IO 处理库的介绍

7-2 libevent 实现高性能服务器

7-3 作业-libuv 实现对 UDP 的处理

第 8 章 TCP/IP 详解

本章将带你深入 TCP/IP 原理,对 TCP 协议、TCP 三次握手、TCP 四次挥手、UDP 与 RTP 等核心内容做深入剖析。

8-1 IP 协议详解

8-2 TCP 协议详解

8-3 TCP 三次握手

8-4 TCP 四次挥手

8-5 TCPACK机制

8-6 TCP 滑动窗口

8-7 UDP 与 RTP

8-8 实时通信 TCP_UDP 的选择

8-9 TCP 在实时通信中的作用

第 9 章 UDP/RTP/RTCP 详解

本章将对 UDP/RTP 做深入讲解,重点带大家学习 RTCP 协议中的各个报文。

9-1 RTP 包的使用

9-2 RTCP 协议头的分析

9-3 RTCP PayloadType 介绍

9-4 RTCP SR 包文详解

9-5 RTCP RR SDES 报文介绍

9-6 BYE APP 报文介绍

9-7 RTCP FB 协议介绍

第 10 章 WebRTC 协议

本章带你学习在多方通信时,该如何保障音视频的服务质量,一是从网络上如何进行优化,如防拥塞,流控,防抖动等;二是在音视频内容上如何进行优化,如 SVC,多流,动态码率等。

10-1 STUN 协议介绍

10-2 STUN Message Type 消息

10-3 STUN Message type 详解

10-4 STUN body 详解

10-5 ICE 工作原理

10-6 加密解密基本概念

10-7 OpenSSL 概念及使用

10-8 DTLS 协议详解

10-9 TLS-SRTP 协议讲解

第 11 章 SDP 协议与 WebRTC 媒体协商【需花大力气牢牢掌握】

SDP 协议与媒体协商是 WebRTC 中的核心,同时也是 WebRTC 的核心,本章将带你真正理解 WebRTC 流媒体服务器是如何将多人联系到一起的。

11-1 媒体协商过程

11-2 SDP 协议简介

11-3 SDP 描述信息

11-4 SDP 关键字段的含义及其使用

11-5 WebRTC 中的 SDP

11-6 WebRTC 中 SDP 各字段含义详解

第 12 章 各流媒体服务器的比较

本章将介绍几种多方通信的架构模型,以及比较有名的开源项目的优劣情况,并传授大家如何选择出最适自己或适合团队的开源项目。

12-1 多人互动架构方案

  • Mesh:p2p传输,多个视频流
  • MCU(Multipoint Conferencing Unit):软件混流,一个视频流
  • SFU(Selective Forwarding Unit):服务器直接转发,广泛使用
  • Licode:
  • Janus:
  • Medooze:
  • Mediasoup:

12-2 Mesh 架构模型详解

一对一的通信模型

image-20210904203842516

  • 采集
  • 媒体协商
  • 创建连接,p2p 穿越,绑定连接,信令传输,开始传输

Mesh通信模型

image-20210904204253873

  • 仅适合p2p,仅实验用

12-3 MCU 架构模型详解

image-20210904204448854

12-4 SFU 架构模型详解

image-20210904205015636

  • 分层
  • SVC:zoom

12-5 Licode 流媒体服务器架构和特点

image-20210904205438298

  • MCU

12-6 Janus 流媒体服务器的架构及特点

image-20210904205753854

  • SFU
  • C 语言底层,非epoll

12-7 Medooze 流媒体服务器架构及特点

image-20210904210306384

  • MCU/SFU
  • poll
  • 性能较高
  • node.js 信令服务、c++媒体服务

12-8 Mediasoup 流媒体服务器架构及特点

image-20210904210737877

  • node.js 信令服务、单独的c++媒体服务(管道)
  • epoll,多进程,性能设计合理

性能最好:8 Mediasoup

完备性:5 Licode

性能+完备性:6 Janus

MCU、SFU:7 Medooze

第 13 章 mediasoup 服务器的布署与使用

本章将带你了解一个真正的多方通信是如何搭建起来的。

13-1 Mediasoup 的运行环境

13-2 Mediasoup Demo 的布署

13-3 通过 Nodejs 实现 HTTP 服务

13-4 HTTPS 基本知识

13-5 通过 WWW 服务发布 mediasoup 客户端代码

13-6 作业-客户端是如何与信令服务建立连接的

第 14 章 mediasoup 的信令系统

本章将讲解如何实现流媒体服务器的信令系统,以及信令与数据转发之间是如何进行配合的。一般信令系统都是整个系统的灵魂,知道了信令的运转就撑握了系统的脉落,这样就能很轻松的知道 Mediasoup 的运行逻辑了。

14-1 mediasoup-demo 整体分析

14-2 JavaScript 基本语法一

14-3 JavaScript 基本语法二

14-4 JavaScriptES6 高级特性

14-5 Promise 与 EventEmitter 详解

14-6 剖析 serverjs

14-7 剖析 roomjs

14-8 如何调试 MediasoupDemo

14-9 运行时查看 Mediasoup 的核心信息

第 15 章 mediasoup 源码分析

本章将带你详细了解 Mediasoup 是如何设计的,它又是如何达到高可用,可扩展的,性能是如何优化的,本章你将不仅领略到高性能流媒体服务器的设计精髓, 知道好的架构设计是如何的优美,也会知道所有高性能服务器的实现都是每个细微处的不断打磨才造就出来的。...

15-1 mediasoup 库的架构讲解

15-2 MediasoupJS的作用

15-3 WebRTC 中的 C++类关系图

15-4 Mediasoup 启动详解

15-5 匿名管道进程间通信的原理

15-6 实战通过 socketpair 进行进程间通信

15-7 mediasoup 下 channel 创建的详细过程

15-8 mediasoup 中的消息确信与发送事件机制

15-9 mediasoup 的主业务流程 1

15-10 mediasoup 的主业务流程 2

15-11 mediasoup 连接的创建 1

15-12 mediasoup 连接的创建 2

15-13 mediasoup 数据流转 1

15-14 mediasoup 数据流转 2

15-15 WebRTC 流媒体服务器大规模布署方案

第 16 章 课程总结

本章将带领大家全面总结梳理本门课程的思想和核心技术。

16-1 小结