0%

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块多一点点。要知道我在外面线下培训每小时是几千块。

你觉得这样的价格贵吗?

好评如潮




课程目录




小结

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

  • 本文作者: 音视跳动-李超 [avdance@163.com]
  • 本文链接: https://blog.avdancedu.com/59ecb92/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道