Windows下编译WebRTC

发布于 2023-04-16 | 作者: caesar1228 | 来源: CSDN博客 | 转载于: CSDN博客

1、前言

随着新冠疫情的影响,这两年音视频的需求呈爆发式增长。在音视频领域中,WebRTC可以说是一个绕不开宝库,包括了音视频采集、编解码、传输、渲染的全过程。本文主要记录下在Windows平台上编译WebRTC的全过程。

2、安装VS

在Windows下开发和调试程序我们一般都是使用宇宙最强IDE——Visual Studio,webRTC也支持我们生成VS的工程。安装VS过程不赘述(推荐安装VS2017或VS2019),需要注意的是VS安装的时候须勾选下面三项:

VS2017安装选项中不带有Windows 10 SDK(10.0.18362),可以从从Win10 SDK下载,或者直接安装VS2019。

安装完VS后,还需要安装SDK调试工具。方法是:

3、设置代理

因为众所周知的原因,要下载WebRTC的源码是需要代理工具的。

	set http_proxy=127.0.0.1:7777
set https_proxy=127.0.0.1:7777

4、安装工具depot_tools

git clone获取depot_tools

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# 安装Windows上的编译工具
gclient

将depot_tools目录的路径配置到系统环境变量Path中,且设置到最前面。

5、下载webrtc源码

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

默认下载的是最新的源码,如果想要切换到指定分支,可以使用以下命令:

# 查看可用版本分支
git branch -r

# 切换到m79分支
git checkout branch-heads/m79
gclient sync

# 或者强制切换到指定commit(b484ec0082948ae086c2ba4142b4d2bf8bc4dd4b是m79最后一次提交的commit id)
gclient sync -r b484ec0082948ae086c2ba4142b4d2bf8bc4dd4b --force

可以在从这里获取webrtc所有release版本的信息

6、编译

# 设置vs2017环境变量
set GYP_MSVS_VERSON=2017
set vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community

# 设置vs2019环境变量
set GYP_MSVS_VERSON=2019
set vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community

set GYP_GENERATORS=msvs-ninja,ninja

# 告诉depot_tools使用我们本机的VS进行编译
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

# 编译vs2017 release:
gn gen out\Release-vs2017 --ide=vs2017 --args="is_debug=false target_os=\"win\" target_cpu=\"x64\" is_component_build=false is_clang=false use_lld=false treat_warnings_as_errors=false use_rtti=true rtc_include_tests=false rtc_build_examples=false"
ninja -C out\Release-vs2017

# 编译vs2019 release:
gn gen out\Release-vs2019 --ide=vs2019 --args="is_debug=false target_os=\"win\" target_cpu=\"x64\" is_component_build=false is_clang=false use_lld=false treat_warnings_as_errors=false use_rtti=true rtc_include_tests=false rtc_build_examples=false"
ninja -C out\Release-vs2019

ps:

编译成功后,会在src\out\xxxx\下生成all.sln解决方案文件。打开就可以调试webrtc的项目。在src\out\xxxx\obj目录下生成静态库——webrtc.lib,在其他工程中引用这个静态库,包含相关头文件,就可以在外部使用webrtc的功能了。

7、提取webrtc的所有头文件

在webrtc的src同级目录执行以下脚本

	echo off
 
:: 定义源目录
set sourcePath=.\src
::定义目标路径
set resulePath=.\include
 
xcopy %sourcePath%\*.h %resulePath%\ /s /e /c /y /r
 
pause

8、其他