概述
webrtc
可以说是音视频领域的百科全书了,集音视频采集、音频处理、编解码、传输、渲染于一体。之前一直想完整的编译它来着,但因为各种各样的原因没有编译成功,(没有梯子代码下不完整;编译环境搭建不完全)。上次偶尔在知乎上看到了一种下载webrtc
代码的方法,故抱着尝试的心态又整了一把,没想到编译成功了。所以写下此文记录一下编译过程。本文主要包括以下几个部分:
-
webrtc
代码获取 -
编译环境配置
-
生成
vs
工程
代码获取
有关webrtc
的源代码获取方式可以借鉴下列知乎链接上的方法,首先在阿里云上申请一台国外的主机,下载完代码后再上传至百度云,然后再下载到本地进行编译,具体方法如下。
https://zhuanlan.zhihu.com/p/357634816
也可以直接从下面的百度云上下载代码,代码的版本应该是2021.3.15的更新版本。
链接:https://pan.baidu.com/s/1eaaZOmkTXZ4BI6wCoFu0nw
提取码:webr
复制这段内容后打开百度网盘手机App,操作更方便哦
编译环境配置
在代码下载的过程中可以着手进行编译环境的配置了,主要的工具包括如下:
-
visual studio 2019 community
-
depot_tools
-
git
git
的安装方式就不再赘述了,官网上下载个安装文件一路next
就可以了。接下来重点介绍depot_tools
和vs2019
的配置。
depot_tools
直接使用如下命令下载depot_tools
(所提供的webrtc
代码中包含了该depot_tools
,下载步骤可以跳过,直接进行depot_tools
的配置)
git clone https://webrtc.bj2.agoralab.co/webrtc-mirror/depot_tools.git
下载完成后进行两个步骤:(1)将其路径添加到环境变量中,(2)新建环境变量depot_tools
,并设置其路径。
以及path
中的新建,并将其移动到最前面。
这样depot_tools
的配置就结束了。接下来是vs2019
的配置.
vs2019
安装时选择如下,重点勾选使用C++的桌面开发
,.Net桌面开发
可以不用点(我这里是误点了)。
安装完成后(记住vs
的安装路径)还需要安装SDK
调试工具。首先进入到软件卸载的那个界面,右键点击Windows Software Development Kit
并选择更改,然后选择 Change
-->Debugging Tools for Windows
,选择应用更改即可完成SDK调试工具的安装。注意该调试工具的安装路径,一般会是在C:\Program Files (x86)\Windows Kits\
,我pc
上是安装在D:\Windows Kits
上。
上述步骤完成后开始进行环境变量的设置,主要变量如下:
变量名 | 变量值 |
---|---|
DEPOT_TOOLS_WIN_TOOLCHAIN | 0 |
GYP_GENERATORS | msvs-ninja,ninja |
GYP_MSVS_OVERRIDE_PATH | C:\Program Files (x86)\Microsoft Visual Studio\2019\Community |
GYP_MSVS_VERSION | 2019 |
WINDOWSSDKDIR | D:\Windows Kits\10 |
编译环境的配置基本上就完成了(具体的路径需要自己修改),接下来就可以开始编译webrtc
代码了。
生成vs工程
解压下载的webrtc
源代码,得到如下三个文件夹
进入到webrtc_checkout\src
目录下右键git bash
。Webrtc
默认使用Ninja
作为编译系统,Ninja
工程文件通过GN
生成,由于需要生成vs2019
工程文件,所以使用GN
生成Ninja
工程时需要配置--ide=vs
生成vs文件。首先使用如下命令生成all.sln
文件。
gn gen --ide=vs out/Default
将会默认在out/Default
下生成all.sln
工程文件。提示如下信息表示vs
工程生成成功。
vs
工程生成成功后,接着就可以进行编译了,执行如下命令:
ninja -C out/Default
总共有5251个文件需要处理,编译的时长看电脑配置,我的amd3600
cpu
占用率直接拉满,飙到了4.06GHz,大概十几分钟后编译完成。用vs2019
打开out\Default
下的vs
工程文件all.sln
, 并重新生成解决方案,静待一首歌的时间。
可以看到解决方案下的多个工程,以及生成解决方案无报错产生,至此可以大声的宣布,老子终于把webrtc
编译成功了。不过还需要做最后一步,将sink_filter_ds.cc
中第724行的代码注释掉。不然运行peerconnection_client.exe
和peerconnection_server.exe
时会出现闪退。
RTC_DCHECK_RUN_ON(&capture_checker_);--> //RTC_DCHECK_RUN_ON(&capture_checker_);
可以看到左图的客户端和右图的服务端都能正常运行,至此大功告成。webrtc
里面的干货太多了,编译成功只是第一步,接下来就是抽丝剥茧的过程了。
参考链接:
【1】https://blog.jianchihu.net/windows-webrtc-build.html
【2】https://www.cnblogs.com/Johness/p/webrtc-compile-on-windows.html
【3】https://zhuanlan.zhihu.com/p/357634816
https://mp.weixin.qq.com/s/Z-TSbRx8AHCpyu-0gmXUZQ