前言
篇 基本概念
章 WebRTC概述
1.1 WebRTC是什么
1.2 WebRTC整体架构
第2章 WebRTC通话原理
2.1 概述
2.2 媒体协商
2.3 网络协商
2.4 连接建立的流程
第二篇 基础应用
第3章 HTML5示例工程准备
3.1 开发环境搭建
3.1.1 Node安装
3.1.2 VSCode安装
3.2 新建示例工程
3.2.1 package.json配置
3.2.2 babel支持
3.2.3 webpack配置
3.2.4 首页模板文件
3.2.5 全局样式
3.2.6 入口文件
3.2.7 主组件及路由
第4章 访问设备
4.1 概述
4.2 获取用户媒体数据
4.3 打开摄像头
4.4 打开麦克风
4.5 截取视频
4.6 共享屏幕
4.7 视频滤镜
第5章 音视频设置
5.1 概述
5.2 分辨率概述
5.3 分辨率设置
5.4 音量检测
5.5 设备枚举
5.6 设置综合示例
第6章 媒体流与轨道
6.1 概述
6.2 媒体流
6.3 MediaStreamTrack
6.4 流与轨道API测试
6.5 捕获Video媒体流
6.6 捕获Canvas媒体流
6.6.1 浏览器兼容性
6.6.2 创建画布
6.6.3 Canvas坐标系
6.6.4 绘制API
6.6.5 画板示例
第7章 媒体录制
7.1 媒体录制原理
7.1.1 创建录制对象
7.1.2 常用API
7.1.3 录制事件
7.2 录制音频
7.3 录制视频
7.3.1 约束条件的区别
7.3.2 播放器的区别
7.3.3 miniType的区别
7.3.4 录制视频示例
7.4 录制屏幕
7.5 录制Canvas
第8章 连接建立
8.1 概述
8.2 连接建立的过程
8.3 连接建立示例
8.3.1 视频清晰度自适应
8.3.2 提议/应答信息
8.3.3 Candidate信息
8.4 将Video发送至远端
8.5 流方式同步白板
第9章 数据通道
9.1 概述
9.2 数据通道的概念
9.3 发送文本消息
9.4 发送文件
9.4.1 FileReader
9.4.2 读取数据
9.4.3 发送文件示例
0章 App示例工程准备
10.1 Windows环境搭建
10.2 MacOS环境搭建
10.3 App方案选取
10.4 Flutter示例工程
10.5 权限设置
10.5.1 iOS平台设置
10.5.2 Android平台设置
10.6 项目配置
10.7 入口程序
1章 App音视频技术
11.1 概述
11.2 GetUserMedia
11.3 屏幕共享
11.4 控制设备
11.5 连接建立
11.5.1 媒体约束
11.5.2 连接约束
11.5.3 SDP约束
11.5.4 手机旋转方向
11.5.5 连接建立示例
11.6 数据通道
第三篇 综合案例
2章 一对一视频通话总体架构
12.1 通话流程
12.2 技术框架
12.3 WebSocket
12.4 信令设计
3章 服务器端实现
13.1 Go开发环境搭建
13.1.1 Windows环境搭建
13.1.2 MacOS环境搭建
13.2 开发工具
13.3 后端工程介绍
13.3.1 TURN服务器运行
13.3.2 信令服务器目录
13.4 依赖库管理
13.5 工具库
13.6 项目配置文件
13.7 入口程序
13.8 Socket服务
13.9 P2P信令服务
13.10 用户和会话信息
13.11 房间管理及信令处理
13.11.1 房间管理
13.11.2 信令处理
13.11.3 合并逻辑并测试
4章 Web端实现
14.1 登录组件
14.2 本地视频组件
14.3 远端视频组件
14.4 信令实现
14.5 P2P客户端
14.6 视频通话测试
5章 App端实现
15.1 登录组件
15.2 生成Id
15.3 约束条件
15.4 请求TurnServer
15.5 ICE配置
15.6 封装WebSocket
15.7 定义状态
15.8 信令实现
15.9 P2P客户端
15.10 整体测试