C++音视频

代码改变世界

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1.安装 Debugging Tools for Windows

打开控制面板(类别) -> 程序 -> 程序和功能 -> Windows Software Development Kit - Windows 10.0.19041.685 ->右键 -> 更改。

选中Change -> next -> 勾选中 Debugging Tools for Windows,然后Change安装。

2.安装depot_tools

depot_tools官网地址:https://sites.google.com/a/chromium.org/dev/developers/how-tos/depottools
下载地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip
下载后解压,将解压出来的目录 depot_tools 添加到环境变量中

3.获取webrtc源码

首先配置代理,在 cmd 中执行

set http_proxy=127.0.0.1:21882
set https_proxy=127.0.0.1:21882

下载代码前先设置一些环境变量

set vs2019_install=D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
set GYP_MSVS_OVERRIDE_PATH=D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
set WINDOWSSDKDIR=C:\Program Files (x86)\Windows Kits\10
# 以上三个环境变量,就算有空格,也不需要使用双引号,否则会报错
set GYP_GENERATORS=msvs-ninja,ninja
# 告诉depot_tools使用我们本机的VS进行编译
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

下载代码

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc   #下载约10G的内容,漫长的等待,网络不好的情况下会重试几次
fetch --nohooks webrtc_android    #android平台代码
gclient sync

4.编译

cd src
#开启 h264 编码支持
gn gen --ide=vs2022 --args="proprietary_codecs=true rtc_use_h264=true is_clang = true rtc_include_tests=false " out/Default
gn gen --ide=vs2022 out/Default
ninja -C out/Default            #编译十几分钟

说明:编译参数也可以直接修改 out/Default 目录下的 args.gn 文件

target_cpu="x64"
proprietary_codecs = true
rtc_use_h264 = true
is_clang = true
ffmpeg_branding="Chrome"
treat_warnings_as_errors=false
rtc_include_tests = false

5.后记

本来以为编译会异常艰难,没想到异常顺利,除了下载代码很久之外,其他一切顺利,这是没有想到的。
以为后面就一路平坦了,万万没有想到,艰难才刚开始。
fetch下来的是webrtc最新代码,分支是main,编译出来的peerconnection_client不能连上peerconnection_server,通过简单调试发现client的OnConnect()没有回调,要深入调试太难为我了,于是切换分支到master,还是一样的效果,切换到m79、m78还是不ok,每次切换分子都很费劲,编译也很费时间。
代码应该是没有问题的,可能是我的编译过程有问题吧。
后来在gitee上找了一个webrtc_vs2017编译测试,发现是可以跑通demo的,他的代码版本是m78,我的要求是裁剪出webrtc p2p传输音视频的部分,别的功能几乎都不要,于是就使用这个版本了。

更新于2023-03-24:peerconnection_client不能运行的问题,在最新代码上2023-03-23依然没有修复,原因同样是client的OnConnect()没有回调。有很多人也遇到了这个问题,貌似google的工程师不想解决这个问题,这里是相关讨论 https://bugs.chromium.org/p/webrtc/issues/detail?id=13498,这里有人给出解决办法,经验证此方法是有效的。

posted on 2022-03-16 19:52  shunxiang  阅读(480)  评论(0)    收藏  举报