当前位置: 首页 > news >正文

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官网:

“支持” -> “源代码库”:

按照提示执行命令:

git clone https://webrtc.googlesource.com/src

即可下载WebRTC源码:

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

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

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

国内推荐这种方式。

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

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

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

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

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源码了:

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目录,执行命令:

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。):

gclient runhooks
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

重新同步

gclient sync

再次执行命令:

gn gen out/Default

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

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

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成功了:

相关文章:

  • 第1章 Python 解释器安装(Anaconda/Pyenv 推荐)
  • STM32基础教程——软件I2C
  • 域名与官网的迷思:数字身份认证的全球困境与实践解方-优雅草卓伊凡
  • RT-Thread studio的驱动5.1.0报错修改
  • Mybatisplus:一些常用功能
  • 【Linux】Linux应用开发小经验
  • vmware diffy配置ollama 本机ip无法访问
  • SMT贴片检验标准核心要点与实施规范
  • Learning vtkjs之WindowedSincPolyDataFilter
  • Spring 命名空间注入:p、c 与 .util 的深度解析
  • 54、【OS】【Nuttx】编码规范解读(二)
  • 学习黑客环境配置
  • 参数包展开到初始化列表
  • 高频数据冲击数据库的技术解析与应对方案
  • 《操作系统真象还原》第十二章(2)——进一步完善内核
  • 短信登录功能实现(黑马点评)
  • 山东大学计算机组成与设计第七章习题解析
  • 评估动态化烹饪工艺与营养实训室建设要点
  • NAPPING: 1.0.1靶场(Vulnhub系列)
  • Java框架“若依RuoYi”前后端分离部署
  • 马斯克“星舰基地”成为新城镇,首任市长为SpaceX员工
  • 解放日报:抢占科技制高点,赋能新质生产力
  • 中央网信办部署开展“清朗·整治AI技术滥用”专项行动
  • 屠呦呦当选美国科学院外籍院士
  • 大型长读长RNA测序数据集发布,有助制定精准诊疗策略
  • 俄罗斯纪念卫国战争胜利80周年阅兵式首次彩排在莫斯科举行