WebRTC音视频开发:React+Flutter+Go实战
结合一对一视频通话案例,让读者深入理解WebRTC的各种功能,并快速搭建自己的应用。
基本信息

【插图】

编辑推荐
系统全面地讲解WebRTC音视频开发技术,从基本原理到实际操作步骤,可帮助读者快速上手。
结合一对一视频通话案例,让读者深入理解WebRTC的各种功能,并快速搭建自己的应用。
内容简介
作译者
目录
第一篇 基本概念
第1章 WebRTC概述2
1.1 WebRTC是什么2
1.2 WebRTC整体架构4
第2章 WebRTC通话原理7
2.1 概述7
2.2 媒体协商8
2.3 网络协商11
2.4 连接建立的流程15
第二篇 基础应用
第3章 HTML5示例工程准备18
3.1 开发环境搭建18
3.1.1 Node安装18
3.1.2 VSCode安装19
3.2 新建示例工程20
3.2.1 package.json配置21
3.2.2 babel支持24
3.2.3 webpack配置24
3.2.4 首页模板文件26
前言
笔者近10年来一直从事远程教育系统的开发工作,擅长电子白板、文字聊天、用户列表、一对一/一对多/多对多视频通话、共享桌面、音视频会控、文档共享、文档转换、同步播放点播视频、流媒体转发、媒体录制、流媒体集群等相关技术。最初实现此产品前端使用Flash,流媒体使用FMS(Flash Media Server)方案,这些技术在Web端可以满足需求,但到了移动端就表现得不理想了,主要是性能不佳。另外,Flash使用的协议是RTMP,在互动方面,延迟及回声问题很难解决。Flash支持的另外一个协议RTMFP由于使用不广泛,最终没有采用。不过总体来说,Flash在PC-Web端的表现还是不错的。
在WebRTC出现之前,Flash RTMP是在网页端进行RTC的主要选择。但是老旧平台的使用情况已经出现了衰退,并且安全问题也愈发严重。随着HTML5的发展,Flash Player已经系统地从浏览器中慢慢移出了,Chrome和Firefox已经要求用户提供额外的使用Flash的确认信息,目前Chrome会在后台中阻止Flash的加载。
笔者目前开发远程教育、视频会议、视频会诊等项目时使用的是WebRTC技术。笔者还参与了WebRTC音视频的开源PION/ION项目,以及Flutter+React+Go+WebRTC的视频会议项目。作为项目的主要维护者,希望对WebRTC技术的发展起到推动作用。另外,笔者参与的Flutter-WebRTC客户端插件项目,也为WebRTC技术在客户端提供了一个跨全平台的解决方案,这里感谢好友段维伟工程师对此领域做出的突出贡献。
写作本书的目的是想分享WebRTC知识(因为WebRTC确实优秀),想在为WebRTC社区做点贡献的同时也为我们的产品打下坚实的技术基础。在写作本书的过程中,笔者查阅了大量的资料,使得知识体系扩大了不少,收获良多。
本书主要内容
本书采用由浅入深的方式介绍WebRTC音视频开发技术,分为三篇,共15章,主要内容如下。
第一篇,基本概念(第1~2章),包括WebRTC技术发展历史,分析WebRTC整体架构及其核心API,分析WebRTC通话原理,介绍媒体协商、网络协商等基本概念,介绍NAT、SDP、ICE、STUN以及TURN协议。
第二篇,基础应用(第3~11章),包括访问设备、音视频设置、媒体流与轨道、媒体录制、连接建立过程以及数据通道等应用方法。通过学习本篇内容,读者可以熟练掌握WebRTC的常用接口。
第三篇,综合案例(第12~15章),主要通过一个一对一的视频通话案例将前面所学知识串起来。客户端实现了画面渲染、声音控制、视频控制、大小视频展示等功能,服务器端实现了信令处理服务器以及中转数据服务器。
阅读建议
本书是一本基础入门加实战的书籍,既有基础知识,又有丰富的示例,包括详细的操作步骤,实操性强。由于WebRTC涉及的概念众多且不易理解,所以本书采用理论介绍加小案例实战的方式,这样会增强读者信心,在轻松掌握基础理论的同时掌握其用法。
本书提供了前后端整体解决方案。PC-Web端使用的是React技术,后端使用的是Golang技术,移动端使用的是Flutter技术。建议读者补充一下这方面的基础知识。
对于WebRTC基础部分,建议首先把书中涉及的小例子一个一个运行起来,在熟悉了API后再查看官方文档加深印象。对于一对一视频通话案例,建议首先理解其总体架构,然后运行案例查看效果,然后再分别看各个端的实现过程。
关于随书代码和视频课程
本书所列代码力求完整,但由于篇幅所限,代码没有全放在书里。完整代码可参见以下网址:
http://www.kangshaojun.com
https://github.com/kangshaojun
配套视频课程网址如下:
https://flutter.ke.qq.com/
媒体评论
主要内容特色:
容易上手——通过一个个小案例,只需要简单几步,就能让程序运行起来。
多端讲解——移动端App覆盖iOS和Android系统,还包括桌面端Web接口的使用方法、后端信令服务及中转服务的对应实现。
面向实战——配有一对一视频通话综合案例,可以实现前后端语音视频通信。
覆盖全面——从访问设备、音量检测、设备枚举、媒体流、媒体轨道、媒体录制、连接建立到数据通道,进行全方位讲解。
方案完整——Web端采用React技术,可进行组件化开发以及复杂界面展示;App端使用Flutter跨平台技术,视频渲染能力强并且可以跨多终端;服务器端采用Go技术,可以充分利用服务器硬件资源,加快开发速度。
功能丰富——涉及视频通话及视频会议的众多功能点,如语音视频通信、共享桌面、电子白板、文件传输、音频录制、视频录制、屏幕录制、白板录制等。