201910WebRTC最新源码获取+windows10+vs2017编译踩坑完整过程

       最近准备学习WebRTC,在获取最新源码及编译过程中遇到不少坑,参考过不少博文,里面提到的坑基本也都遇到了,还有些博文里没提到但我遇到的,在这篇博文里面一并记录下,以供有需要的同学参考。同时对涉及到的坑有不同见解或更好的解决方法的同学,欢迎评论交流。

一、准备

1.操作系统

Win7 64位及以上,必须是64位的。我用的是Win10,64位。

2.VS版本

Visual Studio 2017 及以上。我用的Visual Studio 2017 15.9企业版。

下载链接:https://download.csdn.net/download/caoshangpa/10410923

注意:VS2017最好是安装在默认目录C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise,原因后面说明。

下面是我安装时选择的组件:

WIN10 SDK还需要安装Debugging Tools,安装步骤为 控制面板 → 程序 → 程序和功能 → 选中“Windows Software Development Kit” → 变更 → Change → 勾选 “Debugging Tools For Windows” → Change。如下:

3.Python 

编译过程中需要,我用的2.7.9版本,需添加到Path环境变量。注意:如果系统还装了Python3,要把Python2的环境变量放在python3的环境变量之前,这样编译过程中系统才会选择Python2解释器。

下载链接:https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi

4.Microsoft DirectX SDK (June 2010)

下载地址:http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe

这一步,大概率都会出错,出错原因参考下面链接。强烈建议安装前先看下下面的链接,先把该卸载的高版本卸载掉再安装,省去不必要的麻烦。

参考:安装DirectX SDK时出现Error Code:s1023 的解决方案

5.depot_tools

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

下载地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip

下载后解压,并将解压好的depot_tools目录添加到path系统环境变量中,如下图所示:

二、源码的获取

1.设置系统环境变量

各环境变量设置含义如下:

DEPOT_TOOLS_UPDATE=0                                 #不更新depot_tools
DEPOT_TOOLS_WIN_TOOLCHAIN=0                          #编译时使用本机VS工具链
GYP_MSVS_VERSION = 2017                              #指定VS版本
GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise  #vs安装路径,替换成自己的
GYP_GENERATORS=msvs-ninja,ninja                      #使用ninja编译
http_proxy=http://127.0.0.1:1080                     #本机代理端口                          
https_proxy=http://127.0.0.1:1080                    #本机代理端口  

本机代理1080端口加入系统环境变量后,后续使用电脑时如果不开启代理,会出现某些浏览器如Edge不能上网的问题,但开了代理之后就能上网了,解决方法:当你不开启代理的时候把下面“使用设置脚本”这个关掉,开着代理的时候无所谓,都能上网。

2.使用depot_tools获取WebRTC源码

在cmd窗口中输入命令之前,先做如下操作:

系统locale最好设置成English,就是控制面板里面的Region 控制面板-> 时钟和区域->区域->管理->更改系统区域设置 
选择英语美国,勾选Beta版,然后重启。目的是消除源码获取过程中可能出现的“UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 6304: illegal multibyte sequence”编解码错误,此类错误详细说明可看https://www.crifan.com/summary_python_unicodedecode_error_possible_reasons_and_solutions/,解决方法可参考:https://github.com/google/tangent/issues/11

我通过上述操作后错误成功解除。

要注意,这样设置后会造成word、excel里面所有中文字体名称显示为英文,如宋体显示为SimSun,仿宋显示为FangSong等,这是因为改成“英语(美国)”所致。此外,在MarkdownPad里打开还会出现如下图右侧中文字显示异常的问题,这是勾选了Beta版,改了编码方式所致,所以建议编译成功后改回“中文(简体,中国)”、不勾选Beta版,然后重启电脑,中文字体名称恢复为中文,其他编码异常也会消除

然后在cmd窗口中输入以下命令:

mkdir webrtc-checkout           #这是创建一个目录,当然也可以用鼠标创建。
cd webrtc-checkout              #进入到我们刚刚创建的目录中
fetch --nohooks webrtc          #获取代码,这一步会花点时间,代理给力的话也很快
gclient sync                    # 当过程中断时(包括上一步的失败),我们可以使用该命令恢复并继续

获取源码过程中,可能会出现“File name too long”的错误,在git bash里面,输入如下命令可解决:

git config --global core.longpaths true

如果顺利的话,源码拉下来应该是9GB左右,编译完后共20GB左右,注意预留磁盘空间。整个过程花了差不多10GB流量。

执行gclient sync的过程中会有些警告,但是没有什么影响,不必在意,比如:

查看任务管理器,如果一直在下载,进程信息的网络字段不会为0。

 

如果gclient sync执行成功,下载的WebRTC的源码大概9GB左右,但是此时的源码并不完整,还缺少一些工具和资源文件。比如会缺少下列工具和资源文件:

(1)工具

gn.exe:位于webrtc-checkout\src\buildtools\win

clang-format.exe:位于webrtc-checkout\src\buildtools\win

isolate.exe:位于webrtc-checkout\src\tools\luci-go\win64

......

(2)资源

位于webrtc-checkout\src\resources

......

这里工具比资源重要,有同学可能想到了去其他地方拷贝,但这是下策,因为上面列举工具和资源是我所知缺少的,至于是否还缺少其他的,我并不知道。

解决方法:执行gclient runhooks(执行一次HOOK操作),或者执行gclient sync --force(此命令会自动执行一次HOOK操作)。此时会下载缺失的工具和资源文件。

这里执行gclient runhooks是要从谷歌网站上获取一些文件,代理够给力的话获取资源是不会有问题的,但我遇到了某些文件获取失败的情况:

Failed to fetch file gs://chromium-gn/a68b194afb05d6a6357cf2e2464136ed7723c305 for src/buildtools/mac/gn.
...
Error: Command 'download_from_google_storage --no_resume --platform=darwin --no_auth --bucket chromium-gn -s src/buildtools/mac/gn.sha1' returned non-zero exit status ...

建议仔细阅读链接https://idom.me/articles/843.html的说明,当报错时可以手动在浏览器下载,然后把下载下来的文件复制到目标文件夹中,并且改成要求的名字。

如果遇到如下提示:NOTICE:You have PROXY values set in your environment,......BOTO_CONFIG......NO_AUTH_BOTO_CONFIG environment var.

解决方法:新建一个文件,http_proxy.boto,放在任意位置,我放到了D:\depot_tools中,文件内容如下:

[Boto]
proxy=127.0.0.1
proxy_port = 1080

然后将该文件添加到系统环境变量,如下图:

三、编译

指令如下:

cd webrtc-checkout\src
gn gen out/Default --ide=vs2017              #生成VS2017解决方案
ninja -C out/Default                         #开始编译

 这一步也有个大坑,VS2017最好是安装在默认目录C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise,或者只改个盘符,否则即使设置了GYP_MSYS_VERSION环境变量,还是会提示错误:Exception:Visual Studio Version 2017(from GYP_MSYS_VERSION)not found,这就是开头提到的为什么建议把VS2017安装在默认目录C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise。

  产生这个错误的原因是webrtc-checkout\src\build\vs_toolchain.py中语句已经把部分VS的安装路径写死了,如下所示:

for path in (
        os.environ.get('vs2017_install'),
        os.path.expandvars('%ProgramFiles(x86)%'
                           '/Microsoft Visual Studio/2017/Enterprise'),
        os.path.expandvars('%ProgramFiles(x86)%'
                           '/Microsoft Visual Studio/2017/Professional'),
        os.path.expandvars('%ProgramFiles(x86)%'
                           '/Microsoft Visual Studio/2017/Community')):
      if path and os.path.exists(path):
        return path

除此之外,还有一个可能会遇到的坑,那就是pywin32。

编译过程中会报一个类似如下的错误:(这张图是网上找的,我自己出错的图没有留)我编译过程中报的错是:ImportError: No module named win32file,原因都一样,就是windows系统上未安装Pywin32模块,解决办法参考链接:https://blog.csdn.net/qq_34369025/article/details/53687900

安装完之后,即可顺利编译了。

四、测试

成功编译后,在webrtc-checkout\src\out\Default中会有一些可执行的小例子,比如peerconnection_server.exe和peerconnection_client.exe,可以用它俩进行简单的测试。

局域网运行PeerConnection 例子需要用到两台电脑,并要求两台电脑都配置有摄像头和麦克风。测试步骤如下:

1. 电脑A运行peerconnection_server.exe。

2. 电脑A运行peerconnection_client.exe, Server一栏输入 localhost,点击Connect。    

3. 电脑B运行peerconnection_client.exe,Server一栏输入电脑A的局域网ip地址,点击Connect。

4. 电脑A或电脑B双击列表框出现的第一个选项, 建立音视频通信。

5. 任意一方可以在中途按ESC键退出音视频通信。

Windows下 WebRTC Demo运行: PeerConnection参考链接:https://blog.csdn.net/chenxiemin/article/details/79039350

 

整个过程主要参考博文:https://blog.csdn.net/caoshangpa/article/details/53353681

至此,完结。在此感谢文中各链接的博主给的参考!祝大家捣鼓WebRTC顺利!  

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值