Windows下编译WebRTC源码

一、开发环境要求

准备一台64位的win10或win11(我用的是win11)电脑。最好是一台纯净的、没有安装过其它软件的Windows主机,避免已安装的软件和库对编译造成影响。

然后最好预留超过100G的硬盘空间。因为编译WebRTC时会产生大量的临时文件需要空间。

磁盘格式要为NTFS不能为FAT32,因为FAT32不支持4GB以上的文件,而WebRTC中有文件是大于4G的。

二、卸载Python

depot_tools已经包含了自己的Python解释器。如果Windows主机之前已经安装了Python,需要卸载原来的Python避免对之后编译WebRTC造成影响。

三、安装depot_tools

参考《Windows下安装depot_tools》安装depot_tools。

四、安装WinSDK和Visual Studio 2019

Visual Studio 2019换成Visual Studio 2022也是可以的。按照网上的教程安装即可,这里就不再赘述了。

五、下载WebRTC源码

下载WebRTC源码有两种途径,一种是从谷歌官方的地址下载,另一种是从声网提供的镜像下载。这里推荐从声网下载。

(一)从谷歌官方的地址下载WebRTC源码

使用这种方式需要有访问外网(科学上网)的能力。

浏览器访问 https://webrtc.org ,进入WebRTC官网:

"支持" -> "源代码库":

按照提示执行命令:

bash 复制代码
git clone https://webrtc.googlesource.com/src

即可下载WebRTC源码:

下载(克隆)时出现提示:"Updating files:100%....done."即表示下载WebRTC源码完成:

但使用这种方式之后执行同步"gclient sync"大概率是会失败的,即使能访问外网也可能会失败,而且使用这种方式同步耗时非常久。可能出现的情况是辛辛苦苦同步了十几个小时,突然网络不好,执行同步中断了,于是之前的操作全白费了,又得重头开始同步了,所以国内不太推荐这种方式。

(二)从声网提供的镜像下载WebRTC源码

国内推荐这种方式。

浏览器访问 WebRTC 国内镜像 ,按照提示操作即可:

这里再简单讲一下从声网提供的镜像下载WebRTC源码的方法。

首先在我们需要存贮WebRTC源码的目录,新建.gclient文件:

.gclient文件中输入以下内容:

cpp 复制代码
solutions = [
  { "name"        : "src",
    "url"         : "https://webrtc.bj2.agoralab.co/webrtc-mirror/src.git@65e8d9facab05de13634d777702b2c93288f8849",
    "deps_file"   : "DEPS",
    "managed"     : False,
    "safesync_url": "",
    "custom_deps": {
    },
  },
]
target_os = ["win"]

执行下面命令,让WebRTC源码和它所依赖的第三方库都同步到本地计算机上。执行gclient sync后就不需要再通过git clone克隆WebRTC源码了:

bash 复制代码
gclient sync

如果执行gclient sync时报错:"unable to access 'https://chromium.googlesource.com/chromium/tools/depot_tools.git/':Failed to connect to chromium.googlesource.comport 443:Timedout"。使用科学上网工具让自己的电脑拥有访问外网的能力,重新执行gclient sync:

如果控制台输出:"Syncing projects:100%...,done.表示"同步成功了:

可以发现WebRTC源码已经被成功下载到src目录中了:

六、编译WebRTC源码

Chromium和WebRTC是通过gn和ninja进行编译的,gn把.gn文件转换成.ninja文件,然后ninja根据.ninja文件把源码生成目标程序。gn和ninja的关系就与cmake和make的关系差不多。

进入src目录,执行命令:

bash 复制代码
gn gen out/Default

可能会报错:"Toolchain is out of date.Run "gclient runhooks" to update the toolchain,or set DEPOT_TooLS_WIN_ToOLCHAIN=O to use the locallyinstalledtoolchain.":

这时候按照提示执行命令(如果之后还需要执行gn命令,那每一次重新打开控制台都要重新执行:set DEPOT_TOOLS_WIN_TOOLCHAIN=0。):

bash 复制代码
gclient runhooks
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

重新同步

bash 复制代码
gclient sync

再次执行命令:

bash 复制代码
gn gen out/Default

这时报错应该就会消失。执行成功时输出如下:

上面操作都成功后执行命令:

bash 复制代码
ninja -C out/Default

如果报错:"error:'../../resources/audio_processing/test/py_quality_assessment/noise_tracks/city.wav',neededby'py_quality......"。重新同步,再把上述操作重新执行一遍:

执行成功时输出如下:

如果src/out/Default/obj目录下生成了webrtc.lib文件,表示编译WebRTC成功了:

七、调试WebRTC源码

见《Windows下调试WebRTC源码》。

相关推荐
从后端到QT12 小时前
WebRTC 服务器之Janus视频会议插件信令交互
webrtc
从后端到QT1 天前
WebRTC 服务器之Janus架构分析
服务器·架构·webrtc·janus
linkingvision2 天前
Chrome 136 H265 WebRTC 支持 正式版本已包含
前端·chrome·webrtc
fanged2 天前
WebRTC(TODO)
webrtc
学而知不足~4 天前
WebRtc09:网络基础P2P/STUN/TURN/ICE
webrtc
桃花岛主705 天前
WebRTC基于网页的视频会议,手写WebRTC流程(html)
webrtc
学而知不足~6 天前
WebRtc08:WebRtc信令服务器实现
webrtc
桃花岛主707 天前
如何使用WebRTC
webrtc
唯独失去了从容8 天前
WebRTC服务器Coturn服务器的管理平台功能
运维·服务器·webrtc