一、科学上网
二、下载depot_tools
mkdir webrtc
cd webrtc
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
1、windows环境下,在系统变量中添加DEPOT_TOOLS_WIN_TOOLCHAIN,值为0。
该变量在depot_tools/win_toolchain/get_toolchain_if_necessary.py文件中使用,DEPOT_TOOLS_WIN_TOOLCHAIN=0将使用本地已安装的vs版本编译。
2、将depot_tools路径加入PATH变量,放在最前。
三、下载源码
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync
源码很大,下载时间看网络情况和网速而定,失败再次执行gclient sync。
ubuntu下还需要执行:
cd src
./build/install-build-deps.sh
来安装一些编译所需的依赖。
四、编译
1、windows下编译有一些准备工作,参考windows编译准备工作。
2、建议使用m96分支,谷歌2021年最后一个稳定版本。
查看远端分支:
git branch -r
切换m96分支
git checkout -b m96 remotes/branch-heads/4664
3、生成构建文件build.ninja
windows环境下用cmd控制台,不要用powershell,然后在src\build\config\win\BUILD.gn文件中修改此处。
config("static_crt") {
if (is_debug) {
# This pulls in the DLL debug CRT and defines _DEBUG
cflags = [ "/MDd" ]
if (use_custom_libcxx) {
ldflags = [ "/DEFAULTLIB:msvcprtd.lib" ]
}
} else {
cflags = [ "/MD" ]
if (use_custom_libcxx) {
ldflags = [ "/DEFAULTLIB:msvcprt.lib" ]
}
}
}
将使用CRT动态连接。
windows环境下用clang编译,有可能会报"use_xcode_clang"参数未定义,在src/BUILD.gn文件中找到该变量,直接置换为false即可。
windows:
gn gen out/x64_debug_m96 --ide=vs --args="is_debug=true is_clang=true use_lld=false rtc_include_tests=false treat_warnings_as_errors=false use_custom_libcxx=false rtc_enable_protobuf=false use_rtti=true enable_iterator_debugging=true proprietary_codecs=true rtc_use_h264=true ffmpeg_branding=\"Chrome\""
ubuntu18.04:
gn gen out/x64_debug_m96 --args="is_debug=true is_clang=false use_lld=false rtc_include_tests=false treat_warnings_as_errors=false use_custom_libcxx=false rtc_enable_protobuf=false use_rtti=true proprietary_codecs=true rtc_use_h264=true ffmpeg_branding=\"Chrome\""
is_clang:windows环境下打开,为了支持h264编解码,需使用clang编译,ubuntu下gcc编译,关闭。
use_lld=false:不使用LLVM linker。
rtc_include_tests=false:不编译单元测试。
use_custom_libcxx=false:不使用libc++库,这是clang++默认使用的c++标准实现库。
use_rtti=true:使用c++ RTTI。
proprietary_codecs=true:使用有专利的编解码器,为了使用h264。
rtc_use_h264=true:为了使用h264。
ffmpeg_branding=“Chrome”:使用Google Chrome版本的ffmpeg,h264可以正常使用,还有ChromeOS和Chromium版本未尝试。
更多参数作用可使用该命令查看:
gn args out/x64_debug_m96 --list
4、编译
windows环境下,从vs2019 x64 Native Tools Command进入。
ninja -C out/x64_debug_m96
编译过程中可能有一些代码报错,修改即可。