webrtc完整编译记录

有关Webrtc后续,可关注公众号:音频探险记

概述

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

posted @ 2021-06-14 00:10  Tingwei_chen  阅读(1324)  评论(1编辑  收藏  举报