写点什么

《WebRTC 源码深入剖析》总结

  • 2022 年 6 月 05 日
  • 本文字数:2551 字

    阅读完需:约 8 分钟

《WebRTC源码深入剖析》总结

我精心打造的新课 《WebRTC源码深入剖析》 终于更新完了!!!

背景

2021 年年初,在完成了我的处女作《WebRTC音视频实时互动技术——原理、实战与源码分析》一书之后,我终于下定决心,出一部 WebRTC 源码分析的课程了。


我心里十分清楚,要完成这样一个“大部头” ,一定会遇到很多困难。比如,如何将这些苦涩难懂的代码讲的通俗易懂?多长时间能讲完?费那么大心血是否值得(有相应的回报) ......


但我内心又有几分笃定,一方面自 2011 年起,自己就开始关注 WebRTC,最近几年也一直使用 WebRTC 做定制化开发。而且,在写《WebRTC音视频实时互动技术——原理、实战与源码分析》一书时,我又对 WebRTC 源码翻了个底朝天;另一方面,自己已经推出多门视频课,对如何讲课,如何讲好课,也有了一些自己的心得。所以,对是否能讲好这门课,心里还是比较有把握的!更何况,这是我完成 WebRTC 三部曲的最后一步,无论付出多大代价都要完成的。唯一要做的选择是什么时候开始!


就是在这样一个背景下,2021 年 5 月,我开始行动了!

WebRTC 三部曲

完成 WebRTC 三部曲! 是我这几年的一个梦想(显然这个梦想不够高远,因为已经实现了^V^)。音视频实时通信领域的技术有多难,只有自己亲自做过的人才知道,为了保障实时通信时的音视频质量,你不仅要解决音视频编码问题,还必须要解决网络质量,丢包、乱序、延时、重传等等,这些都属于网络质量问题。那为什么会引起网络质量问题呢?比如,发包量超过带宽大小,会导致丢包;线路本身质量带来的问题,各运营商之间的自我保护.....总之,用户看到的都是视频卡了,花屏了,但背后的原因可能各不相同。


要解决在不同的终端(设备)上进行音视频采集/播放,不同编解码格式的数据可以互通,在各种复杂网络环境中能够保障最佳的实时通话质量,难度之大,真如李白诗中描述的“难于上青天!”。而这样一个天大的难题,却被 WebRTC“轻松”化解了。神奇不神奇?意外不意外?因此,自 WebRTC 被开源,便被业内人奉为圭臬,受到人们的追捧。可以说,所有做实时通信的技术人,无不以熟悉 WebRTC 而自傲!


WebRTC 到底是怎么做的呢?我们遇到的各种问题为什么 WebRTC 却处理的很好呢?这些问题一直萦绕在每个技术人的心里。既然 WebRTC 开源了,那就好办了,读它的代码!!!


如电视剧的发展情节一样,事情总不会那么一帆风顺,想读懂 WebRTC 源码?那可不是一件容易的事儿!

  • 第一关,代码下不下来。中美之间的关系大家都清楚,没有点小手段想从 Goole 的源码库中将 WebRTC 代码拉下来,那是不可能的!

  • 第二关,代码拉下来又能怎样呢?10 多个 G 的代码,怎么看?从哪个模块看起?那行代码是头儿?

  • 第三关,有决心,硬着头皮看?WebRTC 的多线程就可以把你搞死!

  • ......


好吧!对于绝大多数同学来说,读 WebRTC 源码的结果就是一轮游,或是从入门到放弃(超不过三天)!

2015 年,一个偶然的机会,我加入了当时的明星创业团队--跟谁学,在那儿一年多的时间里,让我真正了解了什么是创业。几十个人,没日没夜,为了一个共同的目标,为了心中的梦想(愿景)一起奋斗!拼一把,为社会,为家庭,更是为自己


这段经历为我埋下了创业的种子。我在想,要不要自己也做点事儿呢?30 多岁,创业不年轻,但也绝不老!有体力,有心力,多少还有一点财力。当时的在线教育是一股热潮,WebRTC 这么好的东西,这么一个宝藏,又是未来技术的方向,为什么不把它讲出来,让更多的人知道呢?


WebRTC 三部曲,这个计划渐渐的在我的脑海中浮现出来,于是 2017 年我出来创业了。


WebRTC 三部曲的第一部是《WebRTC入门与实战》,这门课从 WebRTC 的应用角度来讲,主要讲 WebRTC 都能做什么,该怎么使用它,包括各个终端的互联互通。这门课已于 2019 年上线;第二部《WebRTC流媒体服器》讲的是如何设计、实现一个可以高负载、大并发,并且能与 WebRTC(浏览器)互通的流媒体服务器,这门课同样于 2019 年上线;第三部就是刚刚更新完的《WebRTC源码深入剖析》


这门课对 WebRTC 进行了抽丝剥茧的分析。从 WebRTC 的 Demo 开始讲起,之后讲解 WebRTC 是如何控制音视频设备采集数据的;采集的数据是如何一步步转给编码器进行编码的;在编码的同时还要进行本地预览,预览的视频数据是在编码前还是编码后?这类大家比较关心的问题在课程中都做了详尽说明。此外,编码后的数据是如何通过网络传输给对端的;当有多个网络可以选择时,WebRTC 是如何做选出最优链路的;WebRTC 是如何保障网络质量的......所有的这些问题都在课程中一一做了剖析。


至此,WebRTC 三部曲计划完成!!!

呕心沥血,精心打造


如我在背景一节所述,我对录制这门课的难度是有预估的。但当真正开始录制之后,才发现难度远超想象。最大的困哪莫过于如何将各个类之间的错综复杂的关系讲明白。如果只讲类关系图,可以很好的梳理出它们的关系和脉络,但同学们看不到代码,看不到细节,这样的课能叫源码剖析吗?如果带着大家一行行看代码,似乎又只见树木不见森林,同样无法达到好的预期。光是为了解决这个问题就花了我好长时间。


本来计划这门课用 6 个月的时间录制完成,结果一拖再拖,最后花了整整一年的时间才完成。一年内,没有节假日,没有参加任何活动,全身心投入其中,不夸张的说,为了这门课,真的是呕心沥血了!


在这一年中,我写了近 1400 页的 PPT,画了 200 多张精美的图片, 录制了 200 多节课,剪辑出了近 40 个小时的视频。


讲解的知识之多,内容跨度之大也超出想象,包括:WebRTC 线程模型、Windows CoreAudio、DirectShow、媒体协商过程、音频引擎、视频引擎、网络传输、Qos(Nack/RTX、jitterbuffer、FEC、NetEq)、Simulcast、SVC 等等。


不夸张的说,这门至少在最近几年内,是同类课程的天花板了。而且课程还会不断更新,将一些当时想讲,但时间不够没有讲的内容陆续更新到课程中。相信这样一门精心打造的课程,一定会让你觉得物超所值

价格贵不贵?

有同学说,这门课 499 的价格是不是有点小贵? 我们来简单的算一算你就清楚这个定价贵不贵了。 按课节算,200 节课程,499/200,每节课才 2 块多钱;按小时算,近 40 个小时,每小时才 10 块多一点点。要知道我在外面线下培训每小时是几千块。


你觉得这样的价格贵吗?

好评如潮


haoping1.png


haoping2.png


haoping3.png


haoping4.png


课程目录


result1-3-2.png


result1-3-2-1.png


result1-3-2-3.png


result1-3-2-4.png


小结

在更新完课程的最后一天做个总结,一方面记录一下 WebRTC 三部曲的完成(这件事儿对我意义重大),另一方面也为下一阶段开启一个新的篇章,同时为这门课做个小小的宣传!

发布于: 刚刚阅读数: 6
用户头像

音视频是未来技术的基石! 2019.04.20 加入

前跟谁学直播平台技术主管;前新东方音视频技术专家;现任音视跳动CTO

评论

发布
暂无评论
《WebRTC源码深入剖析》总结_源码分析_音视频专家-李超_InfoQ写作社区