- 资源介绍
- 更新记录
基于C++音视频高手课-WebRTC远程桌面后台服务实战
手把手带你落地一套WebRTC后台分发服务,助力你在音视频领域稳固基石,跨入高手行列
本课程以共享桌面项目为驱动,以渐进迭代的授课方式,遵循RFC标准,深入解析STUN/TURN/DTLS/ICE/RTP/RTCP/SRTP/SRTCP等网络传输协议栈,手把手带你实现WebRTC P2P通信核心技术和ICE网络框架。教学过程中还会设计针对性实验,验证效果,让你学习顺畅,收获满满。希望通过本课程的学习,你能先人一步,突破瓶颈,顺利跨入音视频领域高手行列。
适合人群
对网络传输、高性能Linux后台服务感兴趣人群
想要提升实时音视频&WebRTC开发水平的
技术储备
具备C/C++/Java/GO等任意一门语言开发经验
熟悉Linux系统基本命令
环境参数
开发工具 Vim或者VsCode
操作系统 Linux,Ubuntu或Centos
技术栈 WetRTC推荐M96版
试看链接:https://pan.baidu.com/s/1ebQk7KAOeNZTi-0QRH2Ojw?pwd=oywq
目录大纲:
-
第1章 WebRTC实战后台服务-课程导学 试看2 节 | 20分钟
本章主要对课程整体内容进行全面的介绍,包括课程目标、课程优势、课程内容安排、适合人群、学习建议等。
- 视频:1-1 WebRTC后台服务–课程导学 (10:07)试看
- 视频:1-2 WebRTC后台服务–课程效果演示 (09:10)试看
-
第2章 为什么要学习ICE技术(音视频SFU分发服务)?2 节 | 20分钟
本章主要介绍音视频分发服务应用的价值及适用性,强调其服务在领域的地位等。
- 视频:2-1 为什么要学习ICE技术 (15:12)
- 视频:2-2 远程桌面共享在各领域的应用介绍 (04:28)
-
第3章 项目总体设计,掌握项目的总体设计及技术选型3 节 | 21分钟
本章主要介绍课程中项目的各项功能、架构设计、核心技术及流程,对整体系统的技术选型做详解分析。
- 视频:3-1 远程桌面共享项目概述 (06:21)
- 视频:3-2 系统架构设计和核心流程 (06:31)
- 视频:3-3 系统通信模型选型 (07:43)
-
第4章 WebRTC offer SDP深度解析和生成16 节 | 231分钟
本章深度讲解WebRTC SDP描述信息,帮助学员掌握不同属性字段的含义和作用,并能够在实际项目中灵活运用。
- 视频:4-1 本章导学 (02:44)
- 视频:4-2 RTC流管理器设计 (18:42)
- 视频:4-3 WebRTC SDP介绍 (05:21)
- 视频:4-4 创建offer SDP(上) (12:41)
- 视频:4-5 创建offer SDP(下) (13:14)
- 视频:4-6 Offer中添加media content (17:49)
- 视频:4-7 实现BUNDLE功能 (24:26)
- 视频:4-8 offer中添加m行 (24:55)
- 视频:4-9 Offer中添加codec (08:26)
- 视频:4-10 Offer中添加codec参数 (15:50)
- 视频:4-11 Offer中添加rtcp-mux和传输方向 (15:11)
- 视频:4-12 认识ice-ufrag和ice-pwd (09:24)
- 视频:4-13 Offer中添加ice-ufrag和ice-pwd (21:50)
- 视频:4-14 生成自签名证书 (15:30)
- 视频:4-15 Offer中添加fingerprint (16:21)
- 视频:4-16 Offer中添加setup (07:40)
-
第5章 ICE运行框架总体介绍,掌握ICE总体运行框架以及核心API的设计方法6 节 | 63分钟
本章重点介绍ICE运行框架以及核心接口的设计,帮助学员掌握ICE的核心流程和重要接口。
- 视频:5-1 本章导学 (01:31)
- 视频:5-2 ICE运行框架和candidate分类 (11:26)
- 视频:5-3 设计和实现IceAgent(一) (12:01)
- 视频:5-4 设计和实现IceAgent(二) (14:27)
- 视频:5-5 实现SetLocalSDP(一) (16:22)
- 视频:5-6 实现SetLocalSDP(二) (06:39)
-
第6章 ICE candidate的搜集、构成和优先级计算方法12 节 | 182分钟
本章重点介绍ICE的candidate搜集,以及candidate结构解析,帮助学员掌握candidate的搜集和实现方法。
- 视频:6-1 本章导学 (02:19)
- 视频:6-2 实现NetworkManager (16:09)
- 视频:6-3 获取可用的本地网络接口 (16:26)
- 视频:6-4 封装PortAllocator类 (19:45)
- 视频:6-5 开始收集本地candidate (14:31)
- 视频:6-6 创建UDPPort类 (12:49)
- 视频:6-7 分配UDP端口 (15:24)
- 视频:6-8 准备socket address (15:03)
- 视频:6-9 ICE candidate的构成解析 (13:00)
- 视频:6-10 创建ICE local candidate (18:08)
- 视频:6-11 实现candidate收集完成信号通知(一) (19:30)
- 视频:6-12 实现candidate收集完成信号通知(二) (18:56)
-
第7章 远程桌面共享SFU服务之推流实现,掌握SFU服务推流功能的实现逻辑11 节 | 188分钟
本章重点讲解远程桌面共享SFU服务推流功能的实现,主要包括offer和answer的处理、ICE参数的解析和处理、UDP网络数据包的读取等内容
- 视频:7-1 推流端peerconnection设置offer.mp4_音频 (17:21)
- 视频:7-2 推流端生成answer并发送给服务端 (20:18)
- 视频:7-3 信令服务处理answer请求 (11:41)
- 视频:7-4 分发服务信令worker异步处理answer (20:23)
- 视频:7-5 分发服务rtc worker处理answer (16:02)
- 视频:7-6 解析answer sdp (21:49)
- 视频:7-7 从sdp中解析传输相关的信息 (19:41)
- 视频:7-8 实现SetRemoteSDP(一) (13:11)
- 视频:7-9 实现SetRemoteSDP(二) (11:37)
- 视频:7-10 UDP网络数据包读取(一) (17:55)
- 视频:7-11 UDP网络数据包读取(二) (17:23)
-
第8章 ICE之STUN协议深入解析和实现27 节 | 455分钟
本章结合RFC标准,重点讲解STUN协议规范,并实现STUN消息和各类属性字段的读写功能。
- 视频:8-1 本章导学 (02:06)
- 视频:8-2 STUN协议详解 (14:35)
- 视频:8-3 验证stun消息的指纹(一) (21:01)
- 视频:8-4 验证stun消息的指纹(二) (12:54)
- 视频:8-5 stun消息头部读取 (13:34)
- 视频:8-6 stun消息属性读取 (15:46)
- 视频:8-7 stun字符串属性类型的读取(一) (10:01)
- 视频:8-8 stun字符串属性类型的读取(二) (17:18)
- 视频:8-9 解析并验证USERNAME属性 (15:28)
- 视频:8-10 解析并验证MI属性(一) (19:14)
- 视频:8-11 解析并验证MI属性(二) (19:25)
- 视频:8-12 stun绑定请求的异常处理 (15:45)
- 视频:8-13 解析PRIORITY属性 (09:10)
- 视频:8-14 创建peer反射candidate (20:14)
- 视频:8-15 创建IceConnection类 (24:14)
- 视频:8-16 构造stun绑定请求响应(一) (22:59)
- 视频:8-17 构造stun绑定请求响应(二) (22:59)
- 视频:8-18 stun响应消息添加MI属性 (21:06)
- 视频:8-19 计算stun响应消息的MI值 (09:48)
- 视频:8-20 stun消息IP属性的读写 (23:14)
- 视频:8-21 添加指纹属性 (05:20)
- 视频:8-22 发送binding响应 (23:28)
- 视频:8-23 UDP数据包的高性能发送(一) (24:37)
- 视频:8-24 UDP数据包的高性能发送(二) (20:29)
- 视频:8-25 ICE通道的保活 (17:09)
- 视频:8-26 stun错误响应消息(一) (16:25)
- 视频:8-27 stun错误响应消息(二) (15:51)
-
第9章 ICE之连通性检查,掌握ICE的连通性检查策略、周期控制7 节 | 121分钟
本章重点讲解ICE连通性检查的方法,包括优先级计算、ping周期,以及ping的构造。
- 视频:9-1 实现服务侧的ICE连通性检查(一) (26:30)
- 视频:9-2 实现服务侧的ICE连通性检查(二) (11:22)
- 视频:9-3 如何设置ICE通道的ping周期 (22:09)
- 视频:9-4 如何设置ICE连接的ping优先级(一) (17:08)
- 视频:9-5 如何设置ICE连接的ping优先级(二) (14:32)
- 视频:9-6 选择一个连接执行ping检查 (11:47)
- 视频:9-7 构造stun绑定请求 (16:48)
-
第10章 ICE的提名机制、连接的选取、切换、保活策略14 节 | 250分钟
本章重点讲解ICE的提名机制,以及ICE连接的选取、切换、保活策略,并计算ICE的状态。
- 视频:10-1 ICE普通提名和激进提名 (11:07)
- 视频:10-2 激进提名实现 (22:40)
- 视频:10-3 发送ping请求 (18:30)
- 视频:10-4 处理stun的响应 (18:01)
- 视频:10-5 计算RTT并输出到log.mp4 (12:59)
- 视频:10-6 更新ICE连接的读写状态.mp4 (13:43)
- 视频:10-7 实现选中连接的切换策略.mp4 (14:28)
- 视频:10-8 切换策略考虑连接的优先级 (13:27)
- 视频:10-9 开始切换选中的连接 (24:50)
- 视频:10-10 处理stun错误响应 (23:59)
- 视频:10-11 设置candidate pair状态 (26:24)
- 视频:10-12 处理ICE的ping周期问题 (17:02)
- 视频:10-13 实现ICE连接探活机制 (23:15)
- 视频:10-14 更新ICE传输通道的状态 (09:25)
-
第11章 WebRTC DTLS剖析和实现,掌握DTLS协议及握手流程,实现数据包的读写19 节 | 294分钟
本章重点讲解DTLS协议以及握手流程并实现,同时根据ICE状态和DTLS状态综合计算peerconnection的状态。
- 视频:11-1 DTLS握手流程详解 (07:36)
- 视频:11-2 封装DtlsTransport类 (15:28)
- 视频:11-3 缓存ClientHello包 (14:18)
- 视频:11-4 安装DTLS (16:45)
- 视频:11-5 设置本地证书 (06:27)
- 视频:11-6 设置远端指纹 (17:39)
- 视频:11-7 启动DTLS (13:56)
- 视频:11-8 DTLS数据包读取 (24:33)
- 视频:11-9 DTLS数据包写入 (15:09)
- 视频:11-10 设置DTLS-SRTP密码套件 (23:06)
- 视频:11-11 设置DtlsTransport的状态 (18:34)
- 视频:11-12 设置DtlsTransport的接收状态 (07:42)
- 视频:11-13 计算PeerConnection的状态.mp4 (16:51)
- 视频:11-14 计算ICE传输通道的状态 (10:15)
- 视频:11-15 计算IceAgent的状态.mp4 (12:25)
- 视频:11-16 联合ICE和DTLS状态计算pc状态(一) (10:57)
- 视频:11-17 联合ICE和DTLS状态计算pc状态(二) (19:14)
- 视频:11-18 peer建连失败下的资源清理(一) (19:53)
- 视频:11-19 peer建连失败下的资源清理(二) (22:37)
-
第12章 远程桌面共享SFU服务之拉流实现,掌握SFU服务拉流功能的实现9 节 | 120分钟
本章重点讲解远程桌面共享SFU服务拉流功能并实现,主要包括音视频转发架构的设计、ssrc的解析和设置、音视频track的创建和设置等内容。
- 视频:12-1 远程桌面共享拉流端UI设计 (12:47)
- 视频:12-2 拉流命令处理.mp4 (14:59)
- 视频:12-3 音视频转发方案设计 (12:22)
- 视频:12-4 解析推流stream中的ssrc (25:46)
- 视频:12-5 解析ssrc group信息 (15:43)
- 视频:12-6 创建音视频track (12:08)
- 视频:12-7 现PushStream获取音视频源的方法 (06:41)
- 视频:12-8 实现PullStream设置音视频源的方法 (06:44)
- 视频:12-9 offer SDP中增加ssrc描述信息 (12:03)
-
第13章 RTP/RTCP包的加密和解密,掌握利用libsrtp库加密和解密音视频数据包17 节 | 236分钟
本章重点讲解RTP/RTCP数据包的加密和解密方法并实现,掌握libsrtp库的初始化、安装、使用以及重点注意事项。
- 视频:13-1 创建DtlsSrtpTransport (13:12)
- 视频:13-2 从DTLS中导出服务端和客户端秘 (28:38)
- 视频:13-3 创建SrtpSession并设置参数 (15:49)
- 视频:13-4 引入libsrtp库 (11:08)
- 视频:13-5 初始化libsrtp库 (09:29)
- 视频:13-6 创建或者更新srtp上下文结构 (18:33)
- 视频:13-7 实现set_recv和update_recv方法 (09:00)
- 视频:13-8 安装DTLS-SRTP (13:02)
- 视频:13-9 解复用rtp和rtcp包 (10:43)
- 视频:13-10 实现rtp和rtcp包的判断方法 (08:30)
- 视频:13-11 rtp数据包解密 (19:55)
- 视频:13-12 rtcp数据包解密 (08:49)
- 视频:13-13 RtcStream获取rtp和rtcp数据包 (15:21)
- 视频:13-14 转发rtp数据包.mp4 (13:52)
- 视频:13-15 实现srtp数据包发送.mp4 (12:50)
- 视频:13-16 加密rtp数据包 (12:24)
- 视频:13-17 加密rtcp数据包并发送 (13:56)
-
第14章 远程桌面共享SFU服务停止推拉流和资源清理6 节 | 64分钟
总结回顾,本章会带领大家,从全局视角来回顾一下整个项目的系统架构和核心技术,主要包括WebRTC信令交换的设计与实现、ICE运行框架的设计与实现、音视频分发架构的设计与实现,帮助大家对整个项目有一个整体的认识。
- 视频:14-1 实现信令服务停止推流 (13:50)
- 视频:14-2 实现分发服务停止推流 (12:16)
- 视频:14-3 实现信令服务停止拉流 (06:39)
- 视频:14-4 实现分发服务停止拉流 (07:55)
- 视频:14-5 异常处理和项目完善(一) (12:24)
- 视频:14-6 异常处理和项目完善(二) (10:25)
-
第15章 WebRTC实战后台服务-课程总结1 节 | 11分钟
本章主要对课程进行整体内容的总结,对课程中涉及到的知识点进行梳理,总结重难点内容,帮助你大家达到更好的学习效果
- 视频:15-1 课程回顾与总结 (10:54)
常见问题FAQ
- 视频课程的格式是什么?
- 视频不加密,网盘在线学习,课程免费更新,持续更新
- 购买后怎么如何下载资源?
- 有些资源没更新完结怎么办?
- 有问题不懂想咨询怎么办?
- 2024-05-27Hi,初次和大家见面了,请多关照!