欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在windows上编译webrtc过程及踩坑

程序员文章站 2022-07-14 20:44:34
...

在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里面去。

在windows上编译webrtc过程及踩坑

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