主编推荐语
资深音视频专家撰写,全面讲解WebRTC,案例代码可直接用于视频会议、在线教育场景,开源商用视频会议系统。
内容简介
这是一本全面、详细讲解WebRTC技术以及如何使用它构建一个可商用的视频会议系统的著作。
技术维度,本书不仅详细讲解了WebRTC规范和全部API、信令系统、底层技术、移动端和服务端实现,而且还总结了作者多年来的“踩坑”经验;实战维度,本书不仅提供了可直接应用于视频会议和在线教育等场景的真实案例,而且开源了一个可商用的视频会议系统WiLearning,教读者如何从0到1搭建一个高并发、易扩展的视频会议系统。
全书一共10章:
第1章介绍了WebRTC的历史、技术架构、网络拓扑、兼容性等内容。
第2章讲解了使用WebRTC API获取本地摄像头、话筒、桌面等媒体流的方法,以及媒体流的录制、使用canvas操作媒体流的方法和示例。
第3章讲解了WebRTC底层使用的传输技术,如ICE、SDP、STUN/TURN等。
第4章介绍了使用RTCPeerConnection管理WebRTC连接的方法。
第5章介绍了WebRTC的媒体管理方法,结合示例演示了切换编码格式、控制视频码率、替换视频背景的方法。
第6章结合实例介绍一种高效、实时的信令系统实现方法,并实现一个可以在生产环境中使用的信令系统。
第7章介绍了使用WebRTC数据通道传输任意数据的方法,结合示例演示了基于P2P的文本聊天以及文件传输功能的实现。
第8章介绍了使用WebRTC获取媒体流相关统计数据的方法,在示例中演示如何使用Chart.js绘图展示实时码率。
第9章介绍了在Android、iOS开发环境中使用WebRTC的方法,通过实例实现了基于WebRTC的视频聊天App。
第10章结合笔者的开源项目WiLearning介绍了从0到1打造高性能视频会议系统的方法。
目录
- 版权信息
- 序
- 前言
- 第1章 WebRTC概述
- 1.1 WebRTC的历史
- 1.2 WebRTC的技术架构
- 1.3 WebRTC的网络拓扑
- 1.4 Simulcast联播
- 1.5 可伸缩视频编码
- 1.6 WebRTC的兼容性
- 1.7 其他直播技术
- 1.8 统一计划与Plan B
- 1.9 本章小结
- 第2章 本地媒体
- 2.1 媒体流
- 2.1.1 构造媒体流
- 2.1.2 MediaStream属性
- 2.1.3 MediaStream方法
- 2.1.4 MediaStream事件
- 2.2 媒体轨道
- 2.2.1 MediaStreamTrack属性
- 2.2.2 MediaStreamTrack方法
- 2.2.3 MediaStreamTrack事件
- 2.3 媒体约束
- 2.3.1 约束类型
- 2.3.2 数据类型与用法
- 2.3.3 通用约束
- 2.3.4 视频约束
- 2.3.5 音频约束
- 2.3.6 屏幕共享约束
- 2.3.7 图像约束
- 2.3.8 约束的advanced属性
- 2.4 媒体设备
- 2.4.1 WebRTC隐私和安全
- 2.4.2 获取摄像头与话筒
- 2.4.3 共享屏幕
- 2.4.4 查询媒体设备
- 2.4.5 监听媒体设备变化
- 2.5 从canvas获取媒体流
- 2.6 从媒体元素获取媒体流
- 2.7 播放媒体流
- 2.8 录制媒体流
- 2.8.1 构造MediaRecorder
- 2.8.2 MediaRecorder属性
- 2.8.3 MediaRecorder方法
- 2.8.4 MediaRecorder事件
- 2.9 示例
- 2.9.1 代码结构
- 2.9.2 获取图片像素数据
- 2.9.3 替换视频背景
- 2.10 本章小结
- 第3章 传输技术
- 3.1 RTP
- 3.2 RTCP
- 3.3 SRTP/SRTCP
- 3.4 TLS/DTLS
- 3.5 SDP
- 3.6 ICE
- 3.7 搭建STUN/TURN服务器
- 3.8 本章小结
- 第4章 连接管理
- 4.1 WebRTC建立连接的过程
- 4.1.1 会话描述信息RTCSessionDescription
- 4.1.2 pending状态与current状态
- 4.1.3 ICE候选者RTCIceCandidate
- 4.2 RTCPeerConnection接口
- 4.2.1 构造函数RTCPeerConnection
- 4.2.2 连接配置RTCConfiguration
- 4.2.3 RTCPeerConnection接口的属性
- 4.2.4 RTCPeerConnection接口的方法
- 4.2.5 RTCPeerConnection接口的事件
- 4.3 完美协商模式
- 4.3.1 SDP冲突问题
- 4.3.2 使用完美协商模式
- 4.3.3 再谈ICE重启
- 4.4 示例
- 4.4.1 运行示例
- 4.4.2 使用WebSocket
- 4.4.3 创建RTCPeerConnection的时机
- 4.5 本章小结
- 第5章 RTP媒体管理
- 5.1 WebRTC编解码
- 5.2 RTCPeerConnection RTP扩展
- 5.2.1 RTCPeerConnection扩展方法
- 5.2.2 RTCPeerConnection扩展事件
- 5.3 传输媒体流
- 5.3.1 无流轨道
- 5.3.2 有流轨道
- 5.4 RTP收发管理
- 5.4.1 RTCRtpTransceiver属性
- 5.4.2 RTCRtpTransceiver方法
- 5.5 RTP发送器
- 5.5.1 RTCRtpSender属性
- 5.5.2 RTCRtpSender方法
- 5.6 RTP接收器
- 5.6.1 RTCRtpReceiver属性
- 5.6.2 RTCRtpReceiver方法
- 5.7 DTLS传输层
- 5.7.1 RTCDtlsTransport属性
- 5.7.2 RTCDtlsTransport方法
- 5.7.3 RTCDtlsTransport事件
- 5.8 ICE传输层
- 5.8.1 RTCIceTransport属性
- 5.8.2 RTCIceTransport方法
- 5.8.3 RTCIceTransport事件
- 5.9 使用DTMF
- 5.9.1 RTCDTMFSender属性
- 5.9.2 RTCDTMFSender方法
- 5.9.3 RTCDTMFSender事件
- 5.10 RTC错误处理
- 5.11 通话的挂起与恢复
- 5.11.1 通话挂起
- 5.11.2 通话恢复
- 5.12 示例
- 5.12.1 动态设置视频码率
- 5.12.2 使用VP9和H264
- 5.12.3 使用虚拟背景
- 5.13 本章小结
- 第6章 信令服务器
- 6.1 使用Node.js
- 6.2 使用TypeScript
- 6.3 使用Express
- 6.4 使用Socket.IO
- 6.5 实现信令服务器
- 6.6 实现信令客户端
- 6.7 示例
- 6.8 本章小结
- 第7章 数据通道
- 7.1 SCTP
- 7.2 RTCPeerConnection数据通道扩展接口
- 7.3 RTCSctpTransport
- 7.4 RTCDataChannel
- 7.5 带内协商与带外协商
- 7.6 文字聊天与文件传输
- 7.7 本章小结
- 第8章 统计数据
- 8.1 统计数据入口
- 8.2 RTCStats及其扩展
- 8.3 实时码率监测
- 8.3.1 使用Chart.js
- 8.3.2 获取码率数据
- 8.4 本章小结
- 第9章 移动端WebRTC
- 9.1 原生应用与混合应用
- 9.2 原生开发环境
- 9.2.1 Android原生开发环境
- 9.2.2 iOS原生开发环境
- 9.3 WebView
- 9.4 Cordova
- 9.4.1 编译环境
- 9.4.2 全局配置config.xml
- 9.4.3 应用程序行为preference
- 9.4.4 应用程序图标icon
- 9.4.5 简单的WebRTC移动应用
- 9.4.6 调试Cordova应用
- 9.5 Ionic Framework
- 9.5.1 安装与使用
- 9.5.2 开发工具
- 9.6 基于Ionic的WebRTC移动应用
- 9.6.1 使用模板创建应用程序
- 9.6.2 首页组件
- 9.6.3 连接管理服务
- 9.6.4 视频与聊天组件
- 9.6.5 构建Android应用程序
- 9.6.6 构建iOS应用程序
- 9.7 本章小结
- 第10章 从0到1打造多人视频会议系统
- 10.1 整体设计
- 10.2 媒体服务器
- 10.2.1 OWT
- 10.2.2 Kurento
- 10.2.3 Janus
- 10.2.4 Mediasoup
- 10.2.5 媒体服务器的选择
- 10.3 Mediasoup信令交互过程
- 10.4 服务器端实现
- 10.4.1 房间与参与者
- 10.4.2 管理与监控接口
- 10.5 客户端实现
- 10.5.1 发布媒体流
- 10.5.2 订阅媒体流
- 10.5.3 共享桌面
- 10.5.4 共享本地媒体
- 10.5.5 文档及白板
- 10.5.6 文字聊天
- 10.6 传输质量监控
- 10.7 从网络故障中恢复
- 10.8 本章小结
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。