草庐IT

WebRTC源码下载与编译

瓜瓜是橘猫 2023-08-16 原文

WebRTC源码编译

1 几种源码下载方案对比

一共四种方法,除了云服务器没试之外把能踩的坑都踩了一遍,最后使用的是挂代理的方法,这种方法是效率最高的。

1.1 拉别人下好的代码

最快,但是遇到问题不好解决。一开始直接拉了别人的百度网盘拉下来的代码,编译报错,错误在网上搜不到,分析了半天也没解决,只能放弃。

1.2云服务器

这种方法看别人成功了,但是云服务器得买国外的就不会被墙了,而且云服务器操作不太方便,如果看代码的话都得在云服务器上面,花费略高。

1.3 国内镜像

国内都是对代码做了镜像,很多依赖库还是得挂代理,还要替换git仓库地址,操作复杂。而且操作了半天还是失败了,应该是之前用的代理服务器不靠谱,依赖不完整。

1.4 挂代理(推荐)

这种方式最省心,我用的IGuGe扩展加Clash,很稳定,一遍就成功了,IGuGe是付费的,18块钱一个月,在晚上测试的时候可以把带宽跑满,大概拉了二十分钟就拉完了,代码完整无异常。

2 源码编译环境准备

2.1 环境要求

  • WebRTC要求是 64位机器 8G 内存。
  • 至少 100G 磁盘空间,NTFS格式。
  • 用一台干净的机器来编译WebRTC,安装过python的会出现一些非常棘手的问题,安装depot_tools会安装python,把原来机子上的python删掉最好,这样能确保一遍成功。
  • 操作系统我用的是win10,win11没试过。
  • 安装visual studio,社区版即可,我用的是VS2022,安装路径务必选C盘。
  • 安装win10SDK,并安装“Debugging Tools For Windows”。

2.2 代理服务器配置

在edge的扩展里搜索iGG谷歌学术助手,安装完以后登录账号打开,点击“客户端下载与订阅“。然后下载Clash Windows客户端,在Clash配置选项中,将IGG配置与订阅中的Clash订阅码粘贴到URL空白里然后点击下载就可以在客户端中使用了。节点会自动选择,不需要自己配置。

然后右键点击Clash的系统托盘图标,确保开启了系统代理和全局模式。
查看代理是否已开启,记住端口号。

打开谷歌或者youtube测试一下,如果访问ok的话代理就设置成功了。

2.3 VS和Win10SDK安装配置

我的VS配置如下图所示
关于Win10SDK的版本问题,之前安装的时候只勾选了19041版本的,没有勾选18042,执行ninja命令报错unknow type name,后来看了别人的博客,把几个SDK都装了就没问题了,我把18042装上以后就不报错了,应该是SDK的版本问题,多装一些没事,装少了报的错误莫名其妙的,错一点点都编译不起来,真的是给搞怕了,比ffmpeg难编多了。

2.4 depot_tools安装

depot_tools就是一堆下载代码,编译等相关的工具,Google统一打包在 depot_tools中,你需将它下载到本地。这里需要注意,完整的depot_tools大概1个G左右,有的人给的depot_tools压缩包不完整,还需要执行gclient才能获得完整的depot_tools,执行gclient也需要代理服务器,前面我们已经配置了代理服务器,这一步我们直接从git上面拉取即可。完整的depot_tools工具安装方式如下。

  • 1.安装git并获取depot_tools
    git的配置就不解释了,在windows下面把git配置好就行了。配置完毕以后新建一个文件夹,在当前目录下执行
    cmd命令行执行:
    set http_proxy=127.0.0.1:xxxx;(xxxx为你的代理服务器的端口号)
    set https_proxy=127.0.0.1:xxxx
    git bash里执行:
    export http_proxy=127.0.0.1:xxxx;
    export https_proxy=127.0.0.1:xxxx
    然后再执行
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    depot_tools目录如下所示
  • 2.配置depot_tools 环境变量


将depot_tools目录添加到环境变量,并且配置DEPOTTOOLSWIN_TOOLCHAIN为0,这个变量配置后,gclient sync会下载buildtools。配置完成记得重启让环境变量生效。

  • 3.执行一下gclient,安装Windows下所需的工具
    重启完成后,在cmd中执行gclient,等待下载,挂了代理的话这一步是不会报错的,下载完成后执行一下gclient,如图所示就是成功了。

3 WebRTC源码下载与编译

3.1源码下载

先创建一个文件夹,再执行fetch命令

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync

执行完是这样的

3.2源码编译

代码下载完以后就开始编译源码,先cd到src文件夹中,再执行

$ cd src
$ gn gen out/Default
$ ninja -C out/Default

执行完ninja命令后我们就可以在 src\out\Default\ 目录下找到 all.sln 这个工程文件,到这里我们就完成编译了。

参考资料

有关WebRTC源码下载与编译的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  3. ruby - Sinatra set cache_control to static files in public folder编译错误 - 2

    我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.

  4. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

    一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

  5. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  6. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  7. ruby - 下载位置 Selenium-webdriver Cucumber Chrome - 2

    我将Cucumber与Ruby结合使用。通过Selenium-Webdriver在Chrome中运行测试时,我想将下载位置更改为测试文件夹而不是用户下载文件夹。我当前的chrome驱动程序是这样设置的:Capybara.default_driver=:seleniumCapybara.register_driver:seleniumdo|app|Capybara::Selenium::Driver.new(app,:browser=>:chrome,desired_capabilities:{'chromeOptions'=>{'args'=>%w{window-size=1920,1

  8. ruby-on-rails - HTTParty 的内存问题和下载大文件 - 2

    这会导致Ruby出现内存问题吗?我知道如果大小超过10KB,Open-URI会写入TempFile。但是HTTParty会在写入TempFile之前尝试将整个PDF保存到内存吗?src=Tempfile.new("file.pdf")src.binmodesrc.writeHTTParty.get("large_file.pdf").parsed_response 最佳答案 您可以使用Net::HTTP。参见thedocumentation(特别是标题为“流媒体响应机构”的部分)。这是文档中的示例:uri=URI('http://e

  9. .net - 是否有 Ruby .NET 编译器? - 2

    是否有适用于Ruby语言的.NETFramework编译器?我听说过DLR(动态语言运行时),这是否将使Ruby能够用于.NET开发? 最佳答案 IronRuby是Microsoft支持的项目,建立在动态语言运行时之上。 关于.net-是否有Ruby.NET编译器?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/199638/

  10. ruby - 强制浏览器下载文件而不是打开文件 - 2

    我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.

随机推荐