一、搭建环境
我们这里介绍在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支持”子组件,因为部分示例需要使用的Win32
和MFC
还需要下载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
目录下,命令行在这个路径下输入:
取消更新检查:
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
然后生成解决方案:
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
中:
ninja -C out/X64Debug
在这期间可能会遇到以下问题:
这段报错告诉我们这个宏ATOMIC_VAR_INIT(-1)
识别不了,解决方法就是进入到报错的文件:../../third_party/ffmpeg/libavutil/cpu.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