在音视频领域中,webrtc是不得不学习和研究的一个框架。很多博客和书籍对webrtc的研究仅仅限制于web端JS业务交互的介绍。但对一个音视频方向的开发者是完全不够的,JS开发webrtc仅仅是一个web前端一个应用需求,但实际上webrtc不仅仅在web中使用,在app中,PC客户端中也会大量的存在,或者将webrtc进行定制开发或者移植webrtc中的经典算法等,这就需要对webrtc的native代码进行研究和二次开发,本文将着手webrtc源码的下载和编码,为后面对webrtc的学习和二次开发做好铺垫。
Webrtc框架
一、webrtc下载
可能读者给笔者曾经一样,从网上拿别人webrtc源码,一直无法满足需求(从github下来的源码只有一部分或者从某个网盘下载的源码太老)。其实自己动手下载webrtc也是一件很轻松的事情(前提需要科学上网工具),自己拿到新鲜的一手代码何乐不为。
1)环境配置
Webrtc本是chrome代码的一部分,下载chrome和编译chrome代码本身包含了webrtc的下载和编译,只不过webrtc是以静态库形式打进了chrome.exe中,或者以webrtc_componet.dll形式给chrome.exe使用。前面我们《浏览器编译实践》中配置的环境配置本身已经完成适应webrtc下载和编译的环境,这里不再展开。
2 )代码下载
代码下载的步骤很简单,基本上是以下4条命令完成(这个地方需要代理,确保代理OK)。
Webrtc 下载步骤
虽然步骤简单,但过程是不容易的。首先保证你的环境配置要是OK的,否则下载无法进行,其次你的网络是稳定的,否则会经常断线。笔者也是下载了N次才成功,推荐在晚上下载,网络相对稳定。经够多次尝试,终于下载完毕
Webrtc下载
webrtc目录结构如下:
Webrtc的目录结构
二、编译
生成ninja工程配置命令:
gn gen out/Default
译ninja工程
ninja -C out/Default
如需要IDE进行debug,可以像chrome工程以下,生成VS工程
gn gen --ide=vs out\test
生成了1220个VS工程
打开all.sln解决方案,点击生成生成解决方案即可。
最后生成的webrtc.lib在D:\webrtc-checkout\src\out\test\obj下,可供应用程序编译调用,同时生成很多测试可执行程序。
以上是webrtc的下载和编译,后面我将进一步对webrtc进行展开。