webrtc学习笔记一:webrtc入门概念介绍、如何学习webrtc

写在最前面的话

根据项目需求,最近开始学习webrtc,这块内容起点较高,比较庞杂,需要一个系统的学习资料,在慕课网找到了李超老师的视频,这里贴出连接,尊重原创,尊重知识产权,尊重技术开源。
https://coding.imooc.com/class/329.html
本学习笔记是该课程的学习笔记,感觉收货很多,当然在自己实践coding的过程中也有不少踩坑的地方,这里记录一下。

1.什么是webrtc?webrtc的来历。

http://www.sohu.com/a/304429218_120122487
https://baike.baidu.com/item/WebRTC/5522744?fr=aladdin
https://segmentfault.com/a/1190000019593273
Webrtc是Google花了6千万美金收购GIPS于2011年开源的音视频处理引擎。这个引擎可以在各个平台上编译运行,比如Android,ios,mac,Windows上都可以编译运行。Google的愿景是想把webrtc用于浏览器之间进行音视频实时互动通话这种快速的开发而使用的。Webrtc主要有2个功能:第1个是实时数据传输。实时传输就是在端与端之间选择一条最高效最快的传输通道,这方面webrtc是做的非常优秀的。第2个就是音视频引擎。但是它并不是简简单单的音视频的编解码,还能做各种编解码,都可以加入进去;比如视频方面:H264、vp8/vp9、H265、音频方面:opus、albc、等等。除此之外还包括音视频同步;还包括网络传输可能出现的丢包、抖动等等,做数据的平滑处理与恢复等等。。。这都是音视频引擎需要做的。在这两个方面(实时数据传输、音视频引擎的各种算法)和处理各种极端的情况等等都是webrtc的优势。
所以,webrtc是Google开源的、跨平台的、主要用于浏览器之间的实时数据传输的音视频引擎。这就是webrtc。
webrtc学习笔记一:webrtc入门概念介绍、如何学习webrtc

2.webrtc只能用于浏览器么?

当然不是,都能够在哪些领域应用呢?最主要的就是音视频会议在线教育,这是用的最多的。还有照相机、音乐播放器、共享远程桌面、录制、即时通讯工具、P2P网络加速、文件输出工具、游戏以及实时的人脸识别软件。
Webrtc的愿景就是各浏览器之间可以快速的开发出可以实时互动的音视频的应用产品。浏览器现在已经不再是只能通过服务器获取到运算的结果然后进行渲染的简单事情了。首先是H5出现了,使得浏览器可以像普通客户端一样与服务器进行交互,做更多更重要的事情。需要掌握开发效率高学习成本低的JavaScript语言。
Webrtc+webgl可以实现很酷的音乐播放器;
Webrtc+AI可以进行实时的人脸识别;

目前支持webrtc的浏览器厂商:google的Chrome、Safari苹果的、FireFox老牌浏览器、Windows的最新的Edge浏览器。目前这些浏览器对webrtc的功能基本都是支持的。

3G时代使得移动音视频通话成为了可能,已经可以进行通话了,虽然通话质量不太好;4G的时代使得音视频通话的质量有了比较好的保障,现在的5G,音视频通话将会是一个必备的产品。

3.学习webrtc的难点:

①Webrtc庞大、繁杂、门槛高。它涉及了各种协议规范,比如传输方面STUN,TURN,ICE框架,p2p穿越等等。媒体协商时使用的sdp,sdp对于webrtc做了专门的修改,等等都需要阅读大量的规范才能了解,这就增加了学习难度,而且这些文档都是英文文档。
②客户端与服务器分离。Webrtc只是一个客户端的规范,它没有定义服务端,服务端可以根据自己的业务自己去实现,去定义。要客户端与服务端之间进行通信,就必须搭建服务端,但是如果没有一定的基础和积累,很难写出服务端并与客户端进行很好的配合。
③网络屏蔽、系统的资料少。
④网上的demo错误多。

4.如何学习webrtc?

首先,上手webrtc的api,怎么调用api做出应用程序。
其次,学习基础理论知识,再去做实战练习。
第三,学习深入,深度学习,原理。
第四,做实战练习。
最后,全面了解webrtc。【webrtc的音视频传输以及非音视频传输、对于网络质量的统计与分析等等】。

5.学习计划:

第一阶段:基础入门:
Webrtc架构了解。
Nodejs原理及搭建。
JS简单语法。

第二阶段:音视频采集;
音视频设备管理;
音视频数据采集;
拍照;
录制;

第三部分:信令服务器;
信令服务器的作用;
Nodejs+socket.io实现信令服务器;
多人聊天的实现;

第四部分:网络传输与协议;
STUN/TURN/ICE(底层链路检测)
RTP/RTCP(传输数据)
DTLS/SRTP(数据安全性)
数据统计与网络质量评估
最后一部分:音视频通话;
媒体能力协商过程
端对端传输逻辑
实现1:1实时通话
共享远程桌面
Android与浏览器互通

掌握:

①Webrtc API的使用;
②Webrtc的工作原理;
③信令服务器的设计与搭建;
④实现1:1的实时互动直播系统;

技术:

1.设备管理(前置后置摄像头)
2.音视频数据采集
3.桌面采集
4.p2p穿越,如果穿越不成功则进行服务中转
5.STUN/TURN/ICE链路检测的规范协议
6.RTP/RTCP进行数据反馈传输的协议
7.为了数据安全的DTLS/SRTP数据传输协议
8.网络限流、流量控制
9. 传输之前进行媒体协商,媒体协商包括编解码器、采样率、时钟周期等协商设置。
10.协商完成之后,进行音视频数据的传输,但是最底层走的还是UDP协议。
11.文字聊天的非音视频数据传输。
12.统计与网络质量评估。