0%

Windows下编译WebRTC

随着音视频技术的不断普及,Google推出的 WebRTC 越来越受到大家的喜欢。现在很多直播产品都是基于WebRTC 进行二次开发做出来的。

WebRTC是提供了一整套处理实时音视频的开源库。它包括了音视频处理(采集,编解码,前处理,后处理,渲染),数据传输(实时传输,流控)和业务逻辑控制。可以说 WebRTC 的出现大大减少了做音视频开发的难度,所以熟练掌握好这个库对于做音视频相关的同学就显的特别重要了。

要想掌握 WebRTC 要过的头一关就是如何编译它。WebRTC库非常庞大,光源码就有几个G,所以它对开发主机的性能,网络带宽的要求都非常高。另外,在Windows平台下,它对Windows的系统版本,Visual Studio 版本也都有明确的要求,所以只要其中某一项出问题了,都可能导致失败。这就是为什么很多人在编译WebRTC经常失败的原因。

下面我们言归正传,介绍一下在如何在 Windows下成功编译WebRTC.

注意:本文所有的操作的前提条件是,你可以访问外网

主机及系统配置

第一、WebRTC要求是 64位机器 8G 内存,最好超过16G内存。

我实际的配置是 64位机器,4G内存,4核CPU也是没问题的。

第二、至少 100G 磁盘空间,NTFS格式。

FAT32格式是不能工作的,因为WebRTC中有的文件大于 4G。

第三、Visual Studio 2019社区版即可。

VS 不需要是英文版本

第四、操作系统需要 Win10 系统。

安装虚拟机(可选)

由于环境的问题经常会导致编译失败,所以为了方便设置环境,我使用了VirtualBox虚拟机(该虚拟机是免费的)。相较于VMware它虽然性能稍差,但完全够我们编译开发WebRTC使用。所以我们也不必在虚拟机这个环节上纠结。

安装虚拟机需要注意以下几点:

  1. 为了更好的利用硬件,需要确认你机子的BOIS中是否打开了虚拟化选项,这对虚拟机的性能会产生很大影响。
  2. 在虚拟机上安装完系统后,一定要安装虚拟的增强驱动,这样虚拟机要才能全屏显示。不会的可去问度娘。

安装 Visual Stuido

官网上已经明确说可以使用Visual Studio 2022来编译WebRTC了,亲测确实可行!

但需要注意的是,最新的WebRTC代码中的peerconnection_client程序无法与peerconnection_server连接,该问题已经存在一段时间了,目前还没有修复。所以,如果你想运行peerconnection_client程序,那么你需要将WebRTC切换到M93(4577)之前的版本。而WebRTC M93(4577)之前的版本必须使用VS2019,这一点你一定要清楚。

在安装Visual Studio 时,可以使用免费的 Community Edition 版本。

下载Visual Studio 2022

安装Visual Studio 2019

安装需要注意的事项

  • 安装Win 10 SDK 时,一定要选择 “Debugging Tools For Windows” 这项,它会将调试工具 windbg 和cdb安装上,这些工具会在后面测试和调试时使用。
  • 另外,安装SDK和VS时要将它们安装到C盘
  • 第三,当VS Installer下载好后,在命令行中执行下面的命令来安装VS:
1
2
3
4
$ PATH_TO_INSTALLER.EXE ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--includeRecommended

注意,如果 Windows SDK 是通过 Visual Studio 安装的, 则 调试 Tools 需要按下面步骤安装:

1
Control Panel → Programs → Programs and Features → Select the “Windows Software Development Kit” v14393 → Change → Change → Check “Debugging Tools For Windows” → Change.

安装 depot_tools

depot_tools就是一堆下载代码,编译等相关的工具,Google统一打包在 depot_tools中,你需将它下载到本地。

首先,将 depot_tools.zip 文件解压。

其次,将 depot_tools 目录地址添加到你机器的 系统环境变量 PATH 里,而不是用户级的环境变量里。具体操作如下:

1
Control Panel → System and Security → System → Advanced system settings

注意,必须将它放在PATH环境变量的开头。

然后,用同样的方法将 DEPOT_TOOLS_WIN_TOOLCHAIN 设置到你的系统环境变量里,并设置它的值为 0 ,该变量会告诉 depot_tools 使用你本地安装的 Visual Studio 版本。

默认,depot_tools 使用 Google 内部版本。

最后,打开 cmd.exe, 运行 gclient 命令(不用带作何参数)。第一次运行时,gclient 将安装 Windows 下需要的工具, 包括 msysgit 和 python。gclient 执行完后,在命令行提示符下输入 python 将会显示 python.bat ,这就说明 depot_tools 安装好了。

获取 WebRTC 代码

执行下面的命令就可以获取 WebRTC 的代码了,也只有用这种方式,后面才能编译通过。

1
2
3
4
1. mkdir webrtc-checkout
2. cd webrtc-checkout
3. fetch --nohooks webrtc
4. gclient sync

注意,由于 WebRTC 的代码量非常大,所以我一般都是在晚上让他去下载,第二天就可以用了。

编译及生成工程文件

执行下面的命令就可以编译WebRTC了。

1
2
3
$ cd src
$ gn gen out/Default
$ ninja -C out/Default

编译成功后,执行下面的命令生成VS工程文件

1
$ gn gen --ide=vs out\Default

这时,我们就可以在 src\out\Default\ 目录下找到 all.sln 这个工程文件,到这里我们就大功告成了。

切换Branch

有时候我们需要切到WebRTC的某个分支,可以按下面的步聚操作:

  • 查看WebRTC远端有哪些分支
1
git branch -r
  • 切换到某个具体的分支
1
2
git checkout -b my_branch refs/remotes/branch-heads/xxxx
gclient sync

指定VS 版本

有时间我们需要使用VS的老版本编译旧的WebRTC源码,此时除了需要在Windows上安装老版本VS外,还需要设置如下环境变量,这样WebRTC才会使用老的VS版本。

1
2
set GYP_MSVS_VERSION = 2019
set GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2019\Community

小结

我们上面详细介绍了编译WebRTC的步骤,由于WebRTC本身的原因,大家在操作时一定要仔细阅读每一步,否则都有可能导致编译失败。

谢谢!

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