在windows上编译webrtc过程及踩坑

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明文章来自http://blog.csdn.net/aaronjny https://blog.csdn.net/aaronjny/article/details/79828939

在windows上编译webrtc过程及踩坑

什么是webrtc
百度百科:WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术。2011年5月开放了工程的源代码,在行业内得到了广泛的支持和应用,成为下一代视频通话的标准。

工作需求,开始学习webrtc。第一步,先进行编译,然后,我只能说,真的是太坑了……在Windows上编译webrtc的过程中,随处都是大坑,折腾了好久才搞好。这里写下博客,记录过程和坑点,希望能给自己和他人提供方便。

1.操作系统选择

我的计算机是win10系统,尝试在上面进行编译操作,但在执行gclient命令那部分就失败了,提示改程序无法在我的计算机上运行。。。我不确定是win10本身的问题,还是我自己的配置问题,于是,默默掏出了闲置的另外一台装有win7的笔记本进行了尝试,没有出现相似的问题。

所以,这里操作系统我建议选择win7旗舰版。

更新:之前win10失败的原因找出来了,是我配置了pyqt5的环境变量,导致gclient失败,是我个人原因。因此,这里选择win7或win10都是可以的。

注意,系统要是64位的,内存至少8G,并且系统盘中要留有足够的空间,因为VS 2017安装时会占用约20G的系统盘空间。

另外,存放webrtc的盘需要有100G空闲内存,且为NTFS格式,因为在编译过程中会生成大于4G的文件。

因为这些问题,我还将硬盘格掉,重新分区,重新装的系统,真的坑。。

2.VS版本选择

vs版本选择vs 2017 15.6,不建议使用vs 2015。我使用vs 2015编译webrtc的最新源码失败了,最后使用vs 2017编译成功。

安装vs 2017时,要选择桌面C++开发功能以及MFC and ATL support。另外,WIN 10 SDK必须安装10.0.15063版本,其余版本可能导致编译失败(亲自踩坑= =)。

win 10 SDK还需要安装Debugging Tools,安装步骤为 控制面板 → 程序 → 程序和功能 → 选中“Windows Software Development Kit” → 变更 → Change → Check “Debugging Tools For Windows” → Change.

3.一个必备的工具

webrtc源码是在国外的,直接从国内是无法下载的,所以,这里需要使用代理。具体的我就不多说了,大家自行百度。

注意,这个是必须的,否则无法从墙外获得源码。下面下载源码相关的基本都要用到,届时将不再进行说明。

4.下载、安装depot_tools

depot_tools是包含下载、编译的相关工具,我们要先下载并安装它,才能继续后面的操作。

下载地址:点这里

将depot_tools.zip解压,并将解压后的depot_tools目录路径加入到系统环境变量中的path里面去。

depot_tools

DEPOT_TOOLS_WIN_TOOLCHAIN作为一个变量,也加入到环境变量中,它的值设置为0,这是为了告诉脚本,在编译的时候使用我们本机的vs环境。

现在,打开cmd,先对代理进行设置(在此之前,你要先保证你的代理正在工作,是有效的),否则后面可能会出错,设置的方法为:

在cmd中输入下面两行命令:

set http_proxy=127.0.0.1:1080
set https_proxy=127.0.0.1:1080

注意,根据代理工具的不同,上面的地址和端口可能是不同的,需要根据你的实际情况进行修改。大部分情况下都为127.0.0.1:1080

设置完代理后,请不要关闭cmd窗口,后续操作仍要在该窗口进行,否则仍需要重新设置代理。

在cmd中输入gclient命令,脚本会进行更新,并完成相关工具的安装。

5.使用depot_tools获取webrtc的源码

先设置一些环境变量:

set GYP_MSVS_VERSION = 2017 # 指定vs版本
set GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise  #vs安装路径,替换成自己的
set GYP_GENERATORS=msvs-ninja,ninja 

在cmd中输入以下命令:

mkdir webrtc-checkout #这是创建一个目录,创建之前最好cd到合适的地方
cd webrtc-checkout  # 进入到我们刚刚创建的目录中
fetch --nohooks webrtc  # 获取代码
gclient sync  # 当过程中断时,我们可以使用该命令恢复并继续

请注意,代码比较大,有几个G,请确认你的代理还有足够的流量。另外,下载的时间也比较长,请耐心等待,代理方式最好选全局,不然可能会出现一些意外情况。

当代码获取完成后,cd到源码目录,继续输入指令来生成解决方案。

cd src
gn gen out/Default --ide=vs2017

然后,输入指令进行编译:

ninja -C out/Default

现在,编译开始了。如果足够幸运的话,稍等一段时间,编译就能完成。我刚开始用VS2015进行编译,在这一步中会出现编译失败的情况,用VS2017则一切正常。祝你好运!

最后,还想感慨一句,这里面果然很多大坑啊,真够折腾的!

参考

[1]Webrtc windows 编译
[2]开源实时音视频技术WebRTC在Windows下的简明编译教程
[3]Checking out and Building Chromium for Windows

猜你喜欢

转载自blog.csdn.net/aaronjny/article/details/79828939