课程分类

课程介绍
课程目录
用户评论
课程介绍
课程目录
用户评论

你将获得

  • Web端屏幕共享技术
  • WebRTC核心技术流程
  • 搭建Go静态资源服务并支持https

教学服务

  • icon

    课后答疑

  • icon

    学习群答疑

  • icon

    工作内推

讲师介绍

  • 曾任职于BAT等国内知名公司,擅长高性能高并发后台架构设计,在传统大直播、实时音视频、IM等领域有超过10年以上的实践经验,同时有超过5年的技术团队管理经验。

  • 课程详情

    特殊说明

    课程介绍

    本课程实现了一个简单的Web端1v1屏幕共享示例程序,麻雀虽小五脏俱全,通过该课程,你不仅可以掌握Web端的屏幕共享技术,还能够深入了解WebRTC的核心技术流程。

    如果你想获得更深入的技术学习内容,比如百万级实时音视频系统是如何开发出来的?你可以在本站搜索学习如下课程:
    WebRTC实战:手把手实现大型分布式实时音视频XRTC系统,欢迎加入学习!!!

    错误修订

    第87节06:52左右,过滤RTP包的判断逻辑应该由
    _type & 0x0800 修改为 _type & 0x8000

    完整课程介绍(完整课程目录,请查看文末)
    本课程总共由4个部分构成。

    第一部分(快速入门)

    通过本部分课程,你可以学到以下核心内容:
    1. Web端屏幕共享技术
    2. WebRTC核心通信流程
    3. 搭建Go静态资源服务并支持https

    第二部分(基础架构)

    通过本部分课程,你可以学到以下核心内容:
    1. 用golang实现一个轻量级的web框架
    2. 基于libev + 消息队列的高性能异步网络编程
    3. 无锁队列的原理和实现
    4. golang与c++之间的rpc功能设计和实现

    第三部分(RTC推流)

    通过本部分课程,你可以学到以下核心内容:
    1. RTC推流功能实现,兼容WebRTC
    2. 音视频实时分发核心架构设计
    3. offer/answer模型,SDP各属性详解
    4. STUN/ICE/DTLS等协议栈详解和实现
    5. ICE核心功能实现
    6. WebRTC peerconnection核心流程建立和异常处理
    7. WebRTC核心基础库的运用
    8. DTLS核心流程实现

    第四部分(RTC拉流)

    通过本部分课程,你可以学到以下核心内容:
    1. RTC拉流功能实现,兼容WebRTC
    2. DTLS协商秘钥的获取
    3. 音视频包的加密和解密处理
    4. RTP/RTCP、SRTP/SRTCP协议

    核心模块组成

    xrtcclient(js + html,后续会开发win/android/iOS端的课程,敬请期待):负责rtc推拉流客户端
    xrtcserver(c++实现): 负责音视频数据的实时分发
    signaling(go实现):负责WebRTC SDP的交换

    signaling

    xrtcserver

    协议栈和核心流程

    效果展示-远程共享本地桌面(推流端)

    效果展示-远程共享本地桌面(拉流端)

    效果展示-延迟效果测试(200ms)

    完整目录

    ------------快速入门------------
    1. XRTC1.0-系统效果演示
    2. 课程内容介绍
    3. 课程环境准备
    4.1v1桌面共享-用golang搭建http静态资源服务
    5. 1v1桌面共享-支持https访问
    6. 1v1桌面共享-UI界面设计
    7. 1v1桌面共享-chrome屏幕共享插件的获取和配置
    8. 1v1桌面共享-获取屏幕共享视频流
    9. 1v1桌面共享-WebRTC的核心流程介绍
    10. 1v1桌面共享-实现WebRTC推流
    11. 1v1桌面共享-实现WebRTC拉流(上)
    12. 1v1桌面共享-实现WebRTC拉流(中)
    13. 1v1桌面共享-实现WebRTC拉流(下)
    14. 1v1桌面共享-停止推流和拉流、小结
    ------------核心架构------------
    15. XRTC1.0-服务转发的基本设计理念
    16. XRTC1.0-推流基本流程设计
    17. XRTC1.0-signaling服务基础框架1
    18. XRTC1.0-signaling服务基础框架2
    19. XRTC1.0-推流端UI设计
    20. XRTC1.0-signaling服务添加log模块1
    21. XRTC1.0-signaling服务添加log模块2
    22. XRTC1.0-signaling服务设计comlog
    23. XRTC1.0-signaling服务comlog填充通用日志字段
    24. XRTC1.0-signaling服务comlog添加耗时计算
    25. XRTC1.0-signaling服务添加conf模块
    26. XRTC1.0-signaling服务支持https和静态资源访问
    27. XRTC1.0-signaling服务push请求的发送和处理
    28. XRTC1.0-signaling服务push请求参数的解析和异常处理
    29. XRTC1.0-signaling服务与分发服务通信协议设计
    30. XRTC1.0-signaling服务通过配置文件加载xrpc client
    31. XRTC1.0-signaling服务定义header、request、response对象
    32. XRTC1.0-signaling服务xrpc负载均衡实现
    33. XRTC1.0-xrtcserver搭建基础框架
    34. XRTC1.0-xrtcserver添加conf模块
    35. XRTC1.0-xrtcserver添加log模块
    36. XRTC1.0-xrtcserver实现log异步写入文件
    37. XRTC1.0-xrtcserver解决log写入文件失败的问题
    38. XRTC1.0-xrtcserver信令处理模块设计
    39. XRTC1.0-xrtcserver创建tcp server
    40. XRTC1.0-xrtcserver libev封装
    41. XRTC1.0-xrtcserver IOWatcher增加启动、停止、删除功能
    42. XRTC1.0-xrtcserver 添加事件循环、启动、停止服务功能
    43. XRTC1.0-xrtcserver 创建workers
    44. XRTC1.0-xrtcserver 分发new_conn 给worker处理
    45. XRTC1.0-xrtcserver 无锁队列的实现
    46. XRTC1.0-xrtcserver 封装TcpConnection类
    47. XRTC1.0-signaling实现请求的转发写入
    48. XRTC1.0-xrtcserver tcp连接数据读取1
    49. XRTC1.0-xrtcserver tcp连接数据读取2
    50. XRTC1.0-xrtcserver tcp连接超时处理以及资源清理
    51. XRTC1.0-xrtcserver 解析请求body并处理
    52. XRTC1.0-xrtcserver 创建rtcserver
    53. XRTC1.0-xrtcserver 创建rtcworkers
    54. XRTC1.0-rtcserver将请求分配给worker进行处理
    55. XRTC1.0-xrtcserver rtcworker将offer返给signaling worker
    56. XRTC1.0-xrtcserver信令worker构造响应包
    57. XRTC1.0-xrtcserver信令worker将响应包写入tcpconnection
    58. XRTC1.0-signaling服务读取响应结果
    59. XRTC1.0-signaling服务返回offer给客户端
    ------------RTC推流-------------
    60. XRTC1.0-流管理器设计
    61. XRTC1.0-开始实现create offer
    62. XRTC1.0-向offer中添加media content
    63. XRTC1.0-实现BUNDLE的功能
    64. XRTC1.0-向offer中添加m行以及支持的编解码
    65. XRTC1.0-向offer中添加codec及其详细参数
    66. XRTC1.0-向offer中添加rtcp-mux以及传输方向
    67. XRTC1.0-向offer中添加ice-ufrag和ice-pwd
    68. XRTC1.0-向offer中添加fingerprint
    69. XRTC1.0-向offer中添加setup属性
    70. XRTC1.0-创建IceTransportChannel
    71. XRTC1.0-实现SetLocalDescription
    72. XRTC1.0-获取本地所有可用的网络接口
    73. XRTC1.0-封装PortAllocator类
    74. XRTC1.0-ICE的运行步骤和candidate的分类
    75. XRTC1.0-创建UDP Port
    76. XRTC1.0-准备socket address
    77. XRTC1.0-创建ICE local candidate
    78. XRTC1.0-ICE candidate的收集和交换方式
    79. XRTC1.0-client peerconnection设置offer并创建answer
    80. XRTC1.0-client peerconnection向signaling发送answer
    81. XRTC1.0-signaling server处理sendanswer请求
    82. XRTC1.0-xrtcserver处理answer请求
    83. XRTC1.0-解析answer中的transport info
    84. XRTC1.0-实现SetRemoteDescription
    85. XRTC1.0-实现异步读取推流端网络数据包
    86. XRTC1.0-STUN协议详解
    87. XRTC1.0-验证STUN fingerprint
    88. XRTC1.0-STUN message读取
    89. XRTC1.0-实现STUN ByteString属性类型的读取
    90. XRTC1.0-解析并验证USERNAME属性
    91. XRTC1.0-解析并验证MESSAGE-INTEGRITY属性
    92. XRTC1.0-STUN Binding request异常处理
    93. XRTC1.0-创建peer reflexive candidate
    94. XRTC1.0-创建IceConnection
    95. XRTC1.0-构造binding response
    96. XRTC1.0-添加MESSAGE-INTEGRITY属性
    97. XRTC1.0-添加FINGERPRINT属性
    98. XRTC1.0-发送binding response
    99. XRTC1.0-实现UDP packet的高性能发送
    100. XRTC1.0-完成ICE connection的keepalive
    101. XRTC1.0-发送STUN error response message
    102. XRTC1.0-实现服务侧的连通性检查
    103. XRTC1.0-设计IceTransportChannel的ping执行周期
    104. XRTC1.0-ICE Connection的ping优先级
    105. XRTC1.0-选择一个connection执行本轮ping请求
    106. XRTC1.0-构造STUN request请求
    107. XRTC1.0-ICE普通提名和积极提名
    108. XRTC1.0-发送STUN ping请求
    109. XRTC1.0-处理STUN response响应
    110. XRTC1.0-输出RTT和ping ID信息
    111. XRTC1.0-更新IceConnection的读写状态
    112. XRTC1.0-实现selected connection的切换策略
    113. XRTC1.0-切换策略考虑IceConnection的priority和RTT
    114. XRTC1.0-开始切换selected connection
    115. XRTC1.0-清理STUN request并处理错误响应
    116. XRTC1.0-设置CandidatePairState
    117. XRTC1.0-处理IceConnection ping周期问题
    118. XRTC1.0-实现IceConnection探活机制
    119. XRTC1.0-更新IceTransportChannel的状态
    120. XRTC1.0-封装DtlsTransport类
    121. XRTC1.0-缓存ClientHello packet
    122. XRTC1.0-安装DTLS
    123. XRTC1.0-实现SetLocalCertificate方法
    124. XRTC1.0-实现SetRemoteFingerprint方法
    125. XRTC1.0-启动DTLS
    126. XRTC1.0-实现DTLS数据的读取
    127. XRTC1.0-实现DTLS数据的写入
    128. XRTC1.0-设置DTLS-SRTP密码套件
    129. XRTC1.0-设置DtlsTransport的状态
    130. XRTC1.0-设置DtlsTransport receiving状态
    131. XRTC1.0-计算PeerConnection的状态
    132. XRTC1.0-计算IceTransportChannel的状态
    133. XRTC1.0-计算IceAgent的状态
    134. XRTC1.0-联合ICE和DTLS的状态重新计算PeerConnection的状态
    135. XRTC1.0-实现PeerConnection failed状态下的资源清理
    136. XRTC1.0-signaling支持停止推流
    137. XRTC1.0-xrtcserver支持停止推流
    138. XRTC1.0-推流部分小结
    --------------RTC拉流----------------
    139. XRTC1.0-设计拉流端UI
    140. XRTC1.0-xrtcserver处理pull命令
    141. XRTC1.0-音视频转发方案设计
    142. XRTC1.0-解析PushStream中SDP的ssrc信息
    143. XRTC1.0-解析ssrc group信息
    144. XRTC1.0-创建音视频track
    145. XRTC1.0-PushStream实现获取音视频源的方法
    146. XRTC1.0-PullStream实现设置音视频源的方法
    147. XRTC1.0-offer sdp中增加ssrc的描述信息
    148. XRTC1.0-创建DtlsSrtpTransport
    149. XRTC1.0-从DTLS中导出server和client key
    150. XRTC1.0-创建SrtpSession并设置参数
    151. XRTC1.0-引入libsrtp库
    152. XRTC1.0-初始化libsrtp库
    153. XRTC1.0-创建或者更新srtp context结构
    154. XRTC1.0-完成srtp的set_recv和update_recv方法
    155. XRTC1.0-开始安装DTLS-SRTP
    156. XRTC1.0-解复用rtp和rtcp包
    157. XRTC1.0-实现rtp和rtcp包的判断方法
    158. XRTC1.0-rtp数据包解密
    159. XRTC1.0-rtcp数据包解密
    160. XRTC1.0-RtcStream获取rtp和rtcp数据包
    161. XRTC1.0-转发rtp数据
    162. XRTC1.0-实现DtlsSrtpTransport的rtp发送
    163. XRTC1.0-加密rtp数据包
    164. XRTC1.0-发送加密的rtcp数据包
    165. XRTC1.0-signaling停止拉流
    166. XRTC1.0-xrtcserver处理停止拉流命令
    167. XRTC1.0-异常处理、代码完善
    168. XRTC1.0-总结和效果演示