当前位置: 首页 > 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成功了:

http://www.xdnf.cn/news/261991.html

相关文章:

  • [更新完毕]2025东三省C题深圳杯C题数学建模挑战赛数模思路代码文章教学: 分布式能源接入配电网的风险分析
  • AtCoder Beginner Contest 404(ABCDE)
  • 什么是运算符重载
  • word怎么删除空白页?word最后一页删不掉怎么办
  • 基于开源AI大模型与AI智能名片S2B2C商城小程序的线上活动执行优化研究
  • SQL中的Subquery CTE Temporary Table 区别
  • HTTP基础介绍+OSI七层参考模型+HTTP协议介绍
  • 【Elasticsearch】实现气象数据存储与查询系统
  • 总账业务数据——Part 1
  • 单片机嵌入式CAN库
  • 在 Ubuntu 上安装 cPanel
  • 【Qt】初识Qt
  • 【科研绘图系列】R语言绘制世界地图(map plot)
  • 在多线程环境下如何设计共享数据结构保证原子操作与数据一致性
  • 第十章:反击的序曲(续)
  • JavaScript性能优化实战(8):缓存策略与离线优化
  • JavaScript:pc端网页特效--元素偏移量offset系列
  • flask 获取各种请求数据:GET form-data x-www-form-urlencoded JSON headers 上传文件
  • 每天学一个 Linux 命令(35):dos2unix
  • SMT贴片检验标准核心要点与实施规范
  • MySQL进阶(三)
  • 欺骗单页应用(SPA)渲染隐藏路由 -- trouble at the spa b01lersCTF
  • Ubuntu 24.04 完整Docker安装指南:从零配置到实战命令大全
  • NuttX 与 PX4 系统开发全流程详解
  • 《AI大模型应知应会100篇》第46篇:大模型推理优化技术:量化、剪枝与蒸馏
  • 基于 SAFM 超分辨率上采样模块的 YOLOv12 改进方法—模糊场景目标检测精度提升研究
  • 一、大模型原理:第一步分词Tokenization
  • MySQL数据操作全攻略:DML增删改与DQL高级查询实战指南
  • hadoop存储数据文件原理
  • 微服务设计约束