1.安装 Debugging Tools for Windows
打开控制面板(类别) -> 程序 -> 程序和功能 -> Windows Software Development Kit - Windows 10.0.19041.685 ->右键 -> 更改。
选中Change -> next -> 勾选中 Debugging Tools for Windows,然后Change安装。
2.安装depot_tools
depot_tools官网地址:https://sites.google.com/a/chromium.org/dev/developers/how-tos/depottools
下载地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip
下载后解压,将解压出来的目录 depot_tools 添加到环境变量中
3.获取webrtc源码
首先配置代理,在 cmd 中执行
set http_proxy=127.0.0.1:21882
set https_proxy=127.0.0.1:21882
下载代码前先设置一些环境变量
set vs2019_install=D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
set GYP_MSVS_OVERRIDE_PATH=D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
set WINDOWSSDKDIR=C:\Program Files (x86)\Windows Kits\10
# 以上三个环境变量,就算有空格,也不需要使用双引号,否则会报错
set GYP_GENERATORS=msvs-ninja,ninja
# 告诉depot_tools使用我们本机的VS进行编译
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
下载代码
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc #下载约10G的内容,漫长的等待,网络不好的情况下会重试几次
fetch --nohooks webrtc_android #android平台代码
gclient sync
4.编译
cd src
#开启 h264 编码支持
gn gen --ide=vs2022 --args="proprietary_codecs=true rtc_use_h264=true is_clang = true rtc_include_tests=false " out/Default
gn gen --ide=vs2022 out/Default
ninja -C out/Default #编译十几分钟
说明:编译参数也可以直接修改 out/Default 目录下的 args.gn 文件
target_cpu="x64"
proprietary_codecs = true
rtc_use_h264 = true
is_clang = true
ffmpeg_branding="Chrome"
treat_warnings_as_errors=false
rtc_include_tests = false
5.后记
本来以为编译会异常艰难,没想到异常顺利,除了下载代码很久之外,其他一切顺利,这是没有想到的。
以为后面就一路平坦了,万万没有想到,艰难才刚开始。
fetch下来的是webrtc最新代码,分支是main,编译出来的peerconnection_client不能连上peerconnection_server,通过简单调试发现client的OnConnect()没有回调,要深入调试太难为我了,于是切换分支到master,还是一样的效果,切换到m79、m78还是不ok,每次切换分子都很费劲,编译也很费时间。
代码应该是没有问题的,可能是我的编译过程有问题吧。
后来在gitee上找了一个webrtc_vs2017编译测试,发现是可以跑通demo的,他的代码版本是m78,我的要求是裁剪出webrtc p2p传输音视频的部分,别的功能几乎都不要,于是就使用这个版本了。
更新于2023-03-24:peerconnection_client不能运行的问题,在最新代码上2023-03-23依然没有修复,原因同样是client的OnConnect()没有回调。有很多人也遇到了这个问题,貌似google的工程师不想解决这个问题,这里是相关讨论 https://bugs.chromium.org/p/webrtc/issues/detail?id=13498,这里有人给出解决办法,经验证此方法是有效的。

浙公网安备 33010602011771号