【音视频】WebRTC C++ native 编译

一、搭建环境

我们这里介绍在Windows10+VS2019的环境下编译WebRTC源码,由于WebRTC源码在外网上,需要科学的方式下载,不然下载特别慢,建议直接找国内下载好的源码,这里的源码是2021年的版本:https://pan.baidu.com/s/1oHVz9bxXlW3Q6uO996c5XA#list/path=%2F,提取码:ojbs

1.1 安装VS2019

VS2019的安装比较简单,可执行安装,注意的是安装之后需要在VS Installer中下载Windows 10.0.19041版本的SDK,并且下载支持使用C ++进行桌面开发"组件和" MFC / ATL支持"子组件,因为部分示例需要使用的Win32MFC

还需要下载SDK的调试工具:

  • 如果通过VS Installer 下载的SDK,可以在控制面板→程序→程序和功能→选择" Windows软件开发工具包"→更改→更改→选中"Windows调试工具" "→更改。或者,您可以下载独立的SDK安装程序,并使用它来安装调试工具。

1.2 安装python3

安装需要先卸载之前的老版本,并安装3.8以上的版本,主要是python3要求源码必须下载c盘,下载地址:https://www.python.org/ftp/python/3.8.5/python-3.8.5.exe

1.3 安装 depot_tools

depot_tools是个工具包,里面包含gclient、gcl、gn和ninja等工具,这些根据都是使用python写的。其主要的功能是对git的增强,让代码管理和编译更加简单,要学这个的前提是要会使用git,下载地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip

配置环境变量,这里需要注意,这个位置必须在python和以及git之前

1.4 用gn生成工程和用ninjia编译工程

下载好的webrtc源码,我们进入到webrtc\win\webrtc\webrtc\webrtc-checkout\src目录下,命令行在这个路径下输入:

取消更新检查:

shell 复制代码
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

然后生成解决方案:

shell 复制代码
gn gen out/X64Debug --winsdk="10.0.19041.0" --ide="vs2019" --args="ffmpeg_branding=\"Chrome\" rtc_use_h264 = true proprietary_codecs=true is_debug=true target_cpu=\"x64\" is_component_build=false use_custom_libcxx = false enable_iterator_debugging=true rtc_enable_protobuf=false"

如果上述环境配置的没问题,那么等待一会显示生成成功:

1.5 编译ninja工程

在生成好的目录下我们编译工程,把生成的输出文件放到当前路径下的out/X64Debug中:

shell 复制代码
ninja -C out/X64Debug

在这期间可能会遇到以下问题:

这段报错告诉我们这个宏ATOMIC_VAR_INIT(-1)识别不了,解决方法就是进入到报错的文件:../../third_party/ffmpeg/libavutil/cpu.c中,将报错的地方改为下述代码:

c 复制代码
static atomic_int cpu_flags = -1;

改完后,等待一会,应该就可以成功了

二、测试

编译好的可执行文件在:src/out/x64Debug路径下:

先启动服务器:

然后启动两个客户端:

第二个客户端启动时,点击连接列表:

如果此时直接闪退,进入到src/modules/video_capture/windows/sink_filter_ds.cc文件,找到RTC_DCHECK_FUN_ON(&capture_checkr_),注释这一行:

进入到src/out/X64Debug中,找到all.sln,使用VS2019打开,找到peerconnection_clent项目,然后右键设置为启动项,重写编译生成可执行文件

在这里插入图片描述

按照上述步骤重新启动服务器和客户端,没什么问题的话就能有画面了:

更多资料:https://github.com/0voice