剑痴乎

  • 首页
  • 文章分类
    • 音视频
    • WebRTC
    • 编程之美
    • Linux
    • Windows
    • 生活点滴
    • 校园生活
  • 参考
    • API参考
    • 实用工具
    • 测试音视频
    • 文档
  • 留言板
  • 关于
剑痴乎
代码为剑,如痴如醉
  1. 首页
  2. WebRTC
  3. 正文

Windows平台WebRTC编译-VS2017

2019年3月14日 34138点热度 30人点赞 91条评论

在音视频领域,想深入研究的话,必定会接触WebRTC。WebRTC是一个庞大的工程,就像是音视频领域的百科全书,音视频采集,编解码,传输,渲染等一条龙在WebRTC里都有,而且WebRTC还有很多先进的音视频处理算法。由于WebRTC代码过于庞大,所以最好单步调试跟踪代码运行,这样才可以更好地学习WebRTC,否则很难有头绪。工欲善其事必先利其器,作为调试神器,宇宙第一IDE Visual Studio必不可少。所以本篇文章主要讲下如何在Windows上编译WebRTC,同时得到VS工程,然后调试。

本文内容截止2020.04.01,最新代码测试编译通过。最新VS2017以上版本编译见文末。

系统要求

  • Win7及以上64位系统。
  • 内存至少8G,当然越大越好。
  • 至少50G磁盘空间(NTFS格式),不能是FAT32,因为会生成大于4G的文件。

Visual Studio安装

WebRTC用到了很多C++最新特性,所以编译最新WebRTC代码VS要求为2017(>=15.7.2) 版本。我用的是VS2017社区版(VS新老版本下载)。VS最好安装在C盘,按默认路径安装,否则可能遇到问题(见问题0x02)。安装VS2017时选择自定义安装,必须勾选如下几项:

  • Desktop development with C++组件中10.0.18362或以上的Win10 SDK,后面还要安装调试工具
  • Desktop development with C++组件中MFC以及ATL这两项

2020.04.01更新:由于最新WebRTC源码要求10.0.18362及以上Win10 SDK。所以请下载10.0.18362 或以上的Win10 SDK。本文写于2019年,那时VS2019还没发布。由于10.0.18362 Win10 SDK存在于VS2019安装选项中,VS2017安装选项不带有该SDK,所以使用VS2017得从Win10 SDK下载另外下载最新Win10 SDK,或者再装个VS2019选择安装该SDK

安装完VS2017后,必须安装SDK调试工具。打开控制面板->程序与功能,找到刚才安装的最新Windows Software Development Kit,鼠标右键->change。

勾选Debugging Tools For Windows,然后点击change。

depot_tools安装

下载depot_tools然后解压到某个目录,比我的解压到E盘根目录。接着将该depot_tools目录的路径加到系统环境变量Path里,然后把该路径移到最前面(避免已安装的python与git造成影响)。

获取WebRTC源码

由于WebRTC的源码地址被墙了,所以需要通过代理或者vpn才能得到源码。后面都是命令行操作,打开cmd窗口,由于我用的是ss代理,在cmd窗口我按如下设置:

1
2
set http_proxy=127.0.0.1:1080
set https_proxy=127.0.0.1:1080

设置当前cmd窗口代理上网,如果cmd窗口关闭了重开得重新设置。当然了,也可以设置系统全局代理上网。其他代理方法也类似。如果是VPN之类非代理,就不用这样设置了。

接着执行gclient命令,安装编译需要用到的一些工具,比如git以及python。

1
gclient

再接着设置一些环境变量,设置下我们的VS安装路径。

1
2
3
4
5
set vs2017_install=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set GYP_MSVS_OVERRIDE_PATH=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set GYP_GENERATORS=msvs-ninja,ninja
# 告诉depot_tools使用我们本机的VS进行编译
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

然后cd到要放源码的地方(要遵守前面说的磁盘要求),执行:

1
2
3
4
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync

这一过程是个漫长的等待,要下的东西将近10G,包括源码以及一些测试的音视频文件资源等,如果因为网络等原因中断了,就再执行gclient sync。如果这一步一直卡着不动,可以执行ctrl+c,然后执行gclient sync。

使用gclient sync可能遇到的问题

问题0x01

1
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal not in range(128)

Unicode字符编码问题,python的一个bug,因为很多人系统语言都是中文的,所以得按如下设置,把系统区域改为英文,然后重启即可。

问题0x02

2019.04.01更新。去年的版本我编译时没报这个问题,我看到评论里有人提出来了,我下了今天的最新代码,编译时也碰到了,看了下是最新WebRTC windows相关脚本变化导致

报Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017)错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Traceback (most recent call last):
  File "src/tools/clang/scripts/update.py", line 383, in <module>
    sys.exit(main())
  File "src/tools/clang/scripts/update.py", line 379, in main
    return UpdatePackage(args.package)
  File "src/tools/clang/scripts/update.py", line 313, in UpdatePackage
    CopyDiaDllTo(os.path.join(LLVM_BUILD_DIR, 'bin'))
  File "src/tools/clang/scripts/update.py", line 247, in CopyDiaDllTo
    GetWinSDKDir()
  File "src/tools/clang/scripts/update.py", line 222, in GetWinSDKDir
    msvs_version = vs_toolchain.GetVisualStudioVersion()
  File "D:\webrtc-checkout\src\build\vs_toolchain.py", line 165, in GetVisualStudioVersion
    ' Supported versions are: %s.' % supported_versions_str)
Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017).
Error: Command 'vpython.bat src/tools/clang/scripts/update.py' returned non-zero exit status 1 in D:\webrtc-checkout
Hook 'vpython.bat src/tools/clang/scripts/update.py' took 44.30 secs

解决方法为修改src\build目录下的vs_toolchain.py脚本,加了一行,直接写死我们的VS路径代码:

1
2
3
4
5
6
7
8
9
10
11
12
diff --git a/vs_toolchain.py b/vs_toolchain.py
index c2ad5c02f..3db2d3c41 100755
--- a/vs_toolchain.py
+++ b/vs_toolchain.py
@@ -153,6 +153,7 @@ def GetVisualStudioVersion():
   for version in supported_versions:
     for path in (
         os.environ.get('vs%s_install' % version),
+        os.path.expandvars('D:/Program Files (x86)/Microsoft Visual Studio/%s' % version),
         os.path.expandvars('%ProgramFiles(x86)%' +
                            '/Microsoft Visual Studio/%s' % version)):
       if path and any(os.path.exists(os.path.join(path, edition)) for edition in

脚本中的代码默认以C盘处理的,如果我们的VS安装在C盘默认目录就不会报这个错,但我想很多人VS不会装在C盘。

执行:python src/build/vs_toolchain.py get_toolchain_dir验证修改,控制台打印如下:

1
2
3
4
5
vs_path = "D:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community"
sdk_path = "C:\\Program Files (x86)\\Windows Kits\\10"
vs_version = "2017"
wdk_dir = ""
runtime_dirs = "C:\\WINDOWS\\System32;C:\\WINDOWS\\SysWOW64;Arm64Unused"

说明修改成功。接着我们使用gclient sync会报如下问题:

1
2
3
4
5
6
7
8
9
10
11
src/build (ERROR)
----------------------------------------
[0:00:00] Started.
[0:00:00] Finished running: git config remote.origin.url
[0:00:00] Finished running: git rev-list -n 1 HEAD
[0:00:00] Finished running: git rev-parse --abbrev-ref=strict HEAD
----------------------------------------
Error: 3>
3> ____ src\build at 2c249ccb22f58faae38342331925f657a49a9de8
3>      You have unstaged changes.
3>      Please commit, stash, or reset.

因为我们修改了脚本,所以执行gclient sync --force即可。

gclient sync --force成功结束后,vs_toolchain.py文件会被还原,所以得按前面重新修改vs_toolchain.py。vs_toolchain.py中会优先选择高版本VS编译,由于本文使用VS2017编译,假如我们电脑安装有VS2019,需要按如下修改,把VS2017放前面,避免造成影响。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
diff --git a/vs_toolchain.py b/vs_toolchain.py
index c2ad5c02f..9572acd2b 100755
--- a/vs_toolchain.py
+++ b/vs_toolchain.py
@@ -25,8 +25,8 @@ json_data_file = os.path.join(script_dir, 'win_toolchain.json')
 
# VS versions are listed in descending order of priority (highest first).
MSVS_VERSIONS = collections.OrderedDict([
-  ('2019', '16.0'),
   ('2017', '15.0'),
+  ('2019', '16.0'),
])
 
# List of preferred VC toolset version based on MSVS

编译

生成VS2017工程文件:

1
2
cd src
gn gen --ide=vs out/Default

可以在src\out\Default\ 下得到 all.sln解决方案文件。

如果不想使用默认编译参数,可以使用gn args out/Default --list查看当前编译参数,通过类似如下方式设置:

1
gn gen --ide=vs out/Default --args=“use_rtti=true is_clang=false rtc_build_tools=false rtc_include_tests=false rtc_build_examples=false”

接着执行编译命令:

1
ninja -C out/Default

用VS2017打开:

可以看到众多工程,到此算是完成了。找到我们感兴趣的,就可以用VS单步调试,跟踪代码运行了。这么多宝贝够研究很久了。

代码更新

1
2
3
git checkout master
git pull origin master
gclient sync

引用WebRTC库

WebRTC编译后会在src\out\Default\obj目录下生成整个WebRTC工程的静态库:webrtc.lib,链接下这个就可以了。

总结

总之WebRTC在Windows上的编译很考验耐心,也很苛刻,需要有个好的访问被墙地址工具。最新VS2019编译可以参考我的这篇文章:
Windows平台WebRTC编译(持续更新),本文也不再更新。

参考

1. WebRTC Native code Development
2. Chromium’s build instructions for Windows

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: WebRTC
最后更新:2022年3月27日

Jeff

管理员——代码为剑,如痴如醉

打赏 点赞
< 上一篇
下一篇 >

文章评论

  • jih488

    博主您好!可否分享编译好的WebRTC Visual Studio工程文件?谢谢!

    2019年3月27日
    回复
  • Jeff

    好的,由于将近10G,我得切割下压缩包上传,请留下你的邮箱地址,我到时给你百度网盘地址。

    2019年3月27日
    回复
    • jih488

      @Jeff jih488@sina.com 谢谢!

      2019年3月27日
      回复
      • Liu

        @jih488 博主您好,请问是否方便可以协助我在本地部署编译WebRTC Native的源码?费用多少合适您说话.非常感谢.

        2020年3月19日
        回复
      • 骆驼刺

        @jih488 您好!请教一下,您这个编译后的Lib库,可以用在 VS工程中吗?我自己编译后的WebRTC库(非clang编译的),将peer_connection 做成一个VS工程,然后用WebRTC编译后的库,各种链接问题!不知道您是否注意过,最近的Webrtc(我的是 M77),编译后,很多obj并没有做成库文件(Lib),您是怎么做的呢?

        2020年5月27日
        回复
        • Jeff

          @骆驼刺 非clang编译不清楚,具体一些调用没试过,我不是专业搞windows开发的

          2020年5月27日
          回复
    • wang

      @Jeff 博主,给我也发一份吧,谢谢!!!seuwangcheng@163.com

      2019年3月28日
      回复
    • littlefat_sun

      @Jeff 博主也请发我一份吧,非常感谢。1962904662@qq.com

      2020年4月8日
      回复
      • Jeff

        @littlefat_sun 抱歉啊,最好还是自己编译,最新编译的我没上传(太大了),而且在其他人电脑不一定跑得起来。

        2020年4月8日
        回复
    • dly_xue

      @Jeff 541717868@qq.com 谢谢 翻墙翻不过去 跪求

      2020年4月22日
      回复
      • Jeff

        @dly_xue 抱歉,我传了你也不能跑起来,好多配置东西跟系统绑死了

        2020年4月22日
        回复
    • WebRTC学习者

      @Jeff 你好,博主我想知道你用什么翻墙工具?
      我用Br**k上Google还可以,但是下载webrtc就是不行,下载cipd程序都有问题(确定Win10网络有设置代理)

      2020年5月13日
      回复
  • jih488

    谢谢博主,已收到!

    2019年3月28日
    回复
    • Jeff

      @jih488 ☺

      2019年3月28日
      回复
  • iosnower

    博主,感谢你的分享,网盘地址也发我一份,谢谢。
    zero_hot@163.com

    2019年5月1日
    回复
  • fk

    博主,请也给我发一份吧,谢谢!2622733392@qq.com

    2019年5月10日
    回复
  • 昨日围城

    博主求发,跪谢。654125664@qq.com

    2019年5月25日
    回复
    • WebRTC学习者

      @昨日围城 感谢博主的博客,感谢博主热情回复。
      在折腾了超过100次、将近一周时间之后,我果断放弃了VPN,花钱租了个国外虚拟机,装了Win10 Pro,直接远程桌面操作 -_-!!
      但也不是一帆风顺,也遇到上面类似一些问题,最后参考你们无私共享出来的博文,最后编译出来了。
      感谢!
      (关于使用VPN下载代码,有个问题一直没解决,我相信配置的VPN是没问题,curl访问google.com和facebook都没问题,git可以直接clone到被墙的googlesource代码,但是fetch或gclient老是一开始就有问题,没响应或这超时,想到的各种可能性都试了,一直没解决。这是个遗憾)。

      2020年5月18日
      回复
      • lla

        @WebRTC学习者 我也是 你现在解决了吗

        2020年10月28日
        回复
  • 悠哉嗑瓜子

    博主您好,感谢分享!编译好的WebRTC工程网盘地址能否再共享一下,有劳,灰常感谢! sky_net2006@126.com

    2019年5月28日
    回复
  • rao

    给我发一个raoshr@sohu.com,谢谢!

    2019年6月21日
    回复
  • 共惜芳华

    博主求发,跪谢。276315901@qq.com

    2019年7月3日
    回复
  • 徐对对对

    麻烦博主给我也发一份,搞了一个礼拜,工程都没搭建成功,谢谢啦。327731196@qq.com

    2019年7月5日
    回复
    • Jeff

      @徐对对对 已发

      2019年7月5日
      回复
  • zjianjunxa

    麻烦博主给我也发一份,非常感谢!zjianjunxa@163.com

    2019年7月6日
    回复
  • 曾祥波

    博主 最近webRtc 编译 运行 遇到一下问题 能不能交流一下 我的邮箱是1242174805@qq.com

    2019年7月15日
    回复
  • MichelleHong

    博主,劳烦给我发一份。 我的邮箱 gongjiayu516@163.com

    2019年7月17日
    回复
  • Lost

    劳烦楼主发一份编译好的,邮箱1401014759@qq.com,万分感谢

    2019年7月20日
    回复
  • Sky

    劳烦楼主也赏我一份编译好的吧,邮箱cskybupt@gmail.com,万分感谢

    2019年7月23日
    回复
  • zhang

    ss代理是什么意思,shadowsocks?

    2019年8月14日
    回复
    • Jeff

      @zhang 是的

      2019年8月14日
      回复
  • 夜孤黎

    希望楼主也能给我发一份,十分感谢。

    2019年9月2日
    回复
    • 夜孤黎

      @夜孤黎 邮箱zzbljh123@live.com

      2019年9月2日
      回复
  • 94nbzd

    博主,麻烦你了。
    875631121@qq.com

    2019年9月27日
    回复
  • zm168520

    劳烦楼主也赏我一份编译好的吧,邮箱zhangm168@qq.com,万分感谢

    2019年9月27日
    回复
  • lowkey

    辛苦楼主也发我一份吧, 十分感谢。247730002@qq.com

    2019年12月10日
    回复
  • shuilan

    同求一份 shuilan0066@126.com

    2019年12月20日
    回复
  • xiaopaopaotang

    辛苦楼主也发我一份吧, 十分感谢。1366427360@qq.com

    2019年12月23日
    回复
  • ziqzhang

    gclient sync 报错

    Error: 6>
    6> ____ src\third_party at 53c0cac9614f181fd5d3c4c99c413fa966659819
    6> You have unstaged changes.
    6> Please commit, stash, or reset.

    2019年12月30日
    回复
    • ziqzhang

      @ziqzhang c:\webrtc-checkout\src>gn gen --ide=vs out/Default
      Traceback (most recent call last):
      File "c:/webrtc-checkout/src/build/toolchain/win/setup_toolchain.py", line 298, in
      main()
      File "c:/webrtc-checkout/src/build/toolchain/win/setup_toolchain.py", line 223, in main
      env = _LoadToolchainEnv(cpu, win_sdk_path, target_store)
      File "c:/webrtc-checkout/src/build/toolchain/win/setup_toolchain.py", line 150, in _LoadToolchainEnv
      script_path)
      Exception: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community \VC\vcvarsall.bat is missing - make sure VC++ tools are installed.
      ERROR at //build/toolchain/win/BUILD.gn:384:24: Script returned non-zero exit code.
      win_toolchain_data = exec_script("setup_toolchain.py",
      ^----------
      Current dir: c:/webrtc-checkout/src/out/Default/
      Command: C:/zzq/depot_tools/bootstrap-3_8_0_chromium_8_bin/python/bin/python.exe c:/webrtc-checkout/src/build/toolchain/win/setup_toolchain.py "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community " "C:\Program Files (x86)\Windows Kits\10" "C:\WINDOWS\System32;C:\WINDOWS\SysWOW64;Arm64Unused" win x86 environment.x86
      Returned 1.
      See //build/toolchain/win/BUILD.gn:438:3: whence it was called.
      win_toolchains("x86") {
      ^----------------------
      See //BUILD.gn:29:3: which caused the file to be included.
      group("default") {
      ^-----------------
      Traceback (most recent call last):
      File "c:/webrtc-checkout/src/build/compute_build_timestamp.py", line 127, in
      sys.exit(main())
      File "c:/webrtc-checkout/src/build/compute_build_timestamp.py", line 113, in main
      last_commit_timestamp = int(open(lastchange_file).read())
      IOError: [Errno 2] No such file or directory: 'c:\\webrtc-checkout\\src\\build\\util\\LASTCHANGE.committime'
      c:\webrtc-checkout\src>

      编译的时候报错。博主有遇到过吗?

      2019年12月30日
      回复
      • ziqzhang

        @ziqzhang ./build/util/lastchange.py build/util/LASTCHANGE

        执行这个脚本

        2019年12月30日
        回复
        • ziqzhang

          @ziqzhang IOError: [Errno 2] No such file or directory: 'c:\\webrtc-checkout\\src\\build\\util\\LASTCHANGE.committime' 一开始报这个错误 后来执行./build/util/lastchange.py build/util/LASTCHANGE解决了。

          2019年12月30日
          回复
      • Jeff

        @ziqzhang Exception: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community \VC\vcvarsall.bat is missing – make sure VC++ tools are installed.
        解决方法:set GYP_MSVS_OVERRIDE_PATH=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community
        问题分析:你的路径中Community后多了一个空格:2017\Community \VC,所以肯定找不到vcvarsall.bat

        2020年4月4日
        回复
    • ziqzhang

      @ziqzhang 楼主为什么报这个错误,遇到过吗?

      2019年12月30日
      回复
  • ziqzhang

    gclient sync 报错

    Error: 6>
    6> ____ src\third_party at 53c0cac9614f181fd5d3c4c99c413fa966659819
    6> You have unstaged changes.
    6> Please commit, stash, or reset.
    楼主为什么报这个错误,遇到过吗?

    2019年12月30日
    回复
    • Jeff

      @ziqzhang 这里提示有些东西被你改了,叫你reset下

      2019年12月30日
      回复
  • ziqzhang

    c:\webrtc-checkout\src>ninja -C out/Default
    ninja: Entering directory `out/Default'
    ninja: error: '../../resources/audio_processing/test/py_quality_assessment/noise_tracks/city.wav', needed by 'py_quality_assessment/noise_tracks/city.wav', missing and no known rule to make it

    c:\webrtc-checkout\src>

    博主执行这个命令时报这个错误,有遇到过吗?我发现我目录下时C:\webrtc-checkout\src\resources\audio_processing\test\py_quality_assessment\noise_tracks\city.wav.sha1, 你是这个文件吗?

    2019年12月30日
    回复
    • Jeff

      @ziqzhang 是你执行gclient sync没成功,导致city.wav没下载成功

      2019年12月30日
      回复
      • ziqzhang

        @Jeff c:\webrtc-checkout>gclient sync
        Syncing projects: 43% (16/37) src/buildtools/third_party/libunwind/trunk

        src/third_party (ERROR)
        ----------------------------------------
        [0:00:00] Started.
        [0:00:01] Finished running: git config remote.origin.url
        [0:00:01] Finished running: git rev-list -n 1 HEAD
        [0:00:01] Finished running: git rev-parse --abbrev-ref=strict HEAD
        [0:00:02] Finished running: git rev-parse 53c0cac9614f181fd5d3c4c99c413fa966659819
        ----------------------------------------
        Error: 6>
        6> ____ src\third_party at 53c0cac9614f181fd5d3c4c99c413fa966659819
        6> You have unstaged changes.
        6> Please commit, stash, or reset.
        c:\webrtc-checkout>cd src\third_party

        c:\webrtc-checkout\src\third_party>git reset
        Unstaged changes after reset:
        D blink/web_tests/images/resources/missing-plte-before-trns.png

        好像实没有这个png 文件,但我们按照步骤做的,没做任务删除操作,你又这个文件吗?

        2019年12月30日
        回复
        • Jeff

          @ziqzhang 这个文件我有的

          2019年12月30日
          回复
          • ziqzhang

            @Jeff 能发我一下吗zzqgtt@163.com 我发现了扫描软件把他当作病毒直接删除了,都不征求意见的。

            2019年12月31日
            回复
  • samy

    楼主您好,也请转发我一份,邮箱地址2859662089@qq.com,万分感谢!

    2020年1月25日
    回复
  • fourj

    博主你好,能麻烦您将网盘地址也发给我一份吗,邮箱skychase_leo@163.com,万分感谢

    2020年3月5日
    回复
  • xiaoseyihe

    博主你好,安装你的流程我安装了vs2017 V15.9及其他软件,但是执行gn gen --ide=vs out/Default,却报错误Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017).
    备注:我尝试安装了vs2019 V16.4 VS201715.0等版本都出现以下错误,请求指点,谢谢
    F:\webrtc-checkout\src>gn gen --ide=vs out/Default
    Traceback (most recent call last):
    File "F:/webrtc-checkout/src/build/vs_toolchain.py", line 561, in
    sys.exit(main())
    File "F:/webrtc-checkout/src/build/vs_toolchain.py", line 557, in main
    return commands[sys.argv[1]](*sys.argv[2:])
    File "F:/webrtc-checkout/src/build/vs_toolchain.py", line 543, in GetToolchainDir
    ToGNString(win_sdk_dir), ToGNString(GetVisualStudioVersion()),
    File "F:/webrtc-checkout/src/build/vs_toolchain.py", line 165, in GetVisualStudioVersion
    ' Supported versions are: %s.' % supported_versions_str)
    Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017).
    ERROR at //build/config/win/visual_studio_version.gni:28:7: Script returned non-zero exit code.
    exec_script("../../vs_toolchain.py", [ "get_toolchain_dir" ], "scope")
    ^----------
    Current dir: F:/webrtc-checkout/src/out/Default/
    Command: F:/depot_tools/bootstrap-3_8_0_chromium_8_bin/python/bin/python.exe F:/webrtc-checkout/src/build/vs_toolchain.py get_toolchain_dir
    Returned 1.
    See //build/toolchain/win/BUILD.gn:8:1: whence it was imported.
    import("//build/config/win/visual_studio_version.gni")
    ^----------------------------------------------------
    See //BUILD.gn:29:3: which caused the file to be included.
    group("default") {
    ^------------------
    F:\webrtc-checkout\src>

    2020年3月13日
    回复
    • Jeff

      @xiaoseyihe set GYP_MSVS_VERSION=2017
      set GYP_MSVS_OVERRIDE_PATH=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community
      set GYP_GENERATORS=msvs-ninja,ninja

      2020年3月13日
      回复
      • Jeff

        @Jeff 问题解决方法更新了,见文中问题0x02描述:修改vs_toolchain.py

        2020年4月2日
        回复
  • Jeff

    一年前的编译文章了,以前传网盘的也很久没更新了,也暂时别问我要了。

    2020年3月13日
    回复
  • John

    博主好,我下了8G多,现在卡在这个地方一晚上没动过,一直在重复的输出这个,也没报错。代理连接是正常的,可能是什么原因呢
    Still working on:
    src/base
    src/testing
    src/third_party/libjpeg_turbo
    src/third_party/libyuv

    2020年4月8日
    回复
    • Jeff

      @John 你crtl+c断开重新执行:gclient sync看下,看起来还是网络问题。

      2020年4月8日
      回复
      • John

        @Jeff 确实是这样的,已经编译好了。我才刚入门,有些问题希望博主指点一下。编译的目的是为了什么,得到.lib?还是方便调试?src/out生成了那么多工程该如何调试,我用到的是audio_processing,我打开项目感觉只是提供了接口,并不能调试运行,更不知道如果去调用,这应该涉及到头文件包含、链接库等。应该从哪里入手呢

        2020年4月8日
        回复
        • Jeff

          @John 1)编译目的是为了方便利用VS IDE工具单步调试,让程序跑起来,更好阅读内部代码流程,否则代码那么多,你也不一定看出内部代码如何运行;
          2)如何调试:打开工程中的example目录,运行一个peeconnection_server,两个peerconnection_client,让两个peerconnection_client进行语音视频通信,然后在peerconnection_client中找到你感兴趣的(例如audio_processing)加断点单步调试,了解具体流程;
          3)基本每个模块都有单元测试代码,你可以看下test代码,看看人家怎么用的。

          2020年4月9日
          回复
  • dsfa

    博主你好 为什么我cmd窗口输入gclient没有任何反应?

    2020年4月22日
    回复
    • Jeff

      @dsfa ctrl+c,重新执行看下,是不是网络没设置好

      2020年4月22日
      回复
      • dsfa

        @Jeff 返回CIPD client self-update failed, trying to bootstrap it from scratch...

        2020年4月22日
        回复
        • Jeff

          @dsfa 你的代理有问题

          2020年4月23日
          回复
          • dsfa

            @Jeff 我用的VPN,可以访问外网,就是执行gclient的时候没有用

            2020年4月23日
            回复
          • dsfa

            @Jeff 编出来了 确实是vpn设置的问题

            2020年4月24日
            回复
  • WebRTC学习者

    请问博主,有什么软件翻墙的?

    2020年5月14日
    回复
  • WebRTC学习者

    我在PowerShell,http/https代理设置好了,可以访问google;git代理也设置好了,可以下载chromium.googlesource.com的代码;
    但是!但是!我尝试下载webrtc代码,执行gclient就什么动静也没了,
    我自己装的Python27,在PowerShell试过是可以的。
    为什么执行gclient就没任何动静?

    2020年5月15日
    回复
    • Jeff

      @WebRTC学习者 用cmd命令行试下,不用powershell,

      2020年5月15日
      回复
  • webrtc_学习中

    下载iOS ,编译 支持h264

    gn gen out/ios_release --args='target_os="ios" target_cpu="arm64" is_debug=false proprietary_codecs=true rtc_use_h264=true rtc_include_tests=false' --ide=Xcode

    nijia -C out/ios_release

    编译不过去。

    fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file list file: obj/third_party/ffmpeg/libffmpeg_internal.a.rsp is empty

    这问题谁知道呀?

    2020年6月7日
    回复
    • as da s d

      @webrtc_学习中 解决了么?我也遇到了打算换掉他自带的ffmpeg试试

      2021年7月16日
      回复
  • 骑着上帝奔跑

    初识webrtc,博主求求也给我发一份

    2020年6月20日
    回复
  • 只想知道VS的debug版怎么编译

    以peerconnection_client.exe为例,无论怎么设置编译参数,debug版本 在Visual Studio 2017或2019 都不能正常运行。

    2020年7月1日
    回复
    • 夜袭女儿国

      @只想知道VS的debug版怎么编译 是peerconnection_client.exe主动呼叫另一个client崩溃吗?
      如果是这个的话,考虑切换到m74分支上编译,我编了开发流以及m79,m78,m77,m76,m75这几个分支,都会崩溃。
      看代码似乎是启动摄像头时,崩的

      2020年7月15日
      回复
    • Jeff

      @只想知道VS的debug版怎么编译 报什么错误?

      2020年7月28日
      回复
      • webrtc初学

        @Jeff debug下,出现unable to start program. Operation not supported. unknown error:0x800700d8

        2020年7月30日
        回复
        • Jeff

          @webrtc初学 这个问题不是很清楚。。。

          2020年8月6日
          回复
  • help

    博主,我想问一下,是不是获取源码的那一行命令:fetch webrtc 如果由于网络原因中断的话,是要重新fetch,还是可以通过gclient sync继续下载

    2020年7月13日
    回复
    • Jeff

      @help <code>gclient sync</code>即可

      2020年7月28日
      回复
  • webrtc初学

    楼主,有没有在windows上基于webrtc做过开发啊?

    2020年7月21日
    回复
    • Jeff

      @webrtc初学 我只做跨平台SDK开发,windows sdk倒是写过,应用层那些界面之类开发没有

      2020年7月28日
      回复
  • ziqzhang

    要不把编译好的工程发我把zzqgtt@163.com 谢谢

    2020年12月21日
    回复
  • whale

    @Jeff 博主也请您发我一份编译好的WebRTC Visual Studio工程吧,非常感谢!
    qjcnqtok@126.com

    2021年1月5日
    回复
  • xiaoyu

    楼主您好,我在执行 ninja -C out/Default这个编译命令的时候 报这种错误会是什么原因导致的呢
    In file included from ../../call/fake_network_pipe_unittest.cc:19:
    In file included from ../..\test/gmock.h:17:
    In file included from ../..\testing/gmock/include/gmock/gmock.h:10:
    In file included from ../..\third_party/googletest/src/googlemock/include/gmock/gmock.h:61:
    In file included from ../../third_party/googletest/src/googlemock/include\gmock/gmock-function-mocker.h:4:
    In file included from ../../third_party/googletest/src/googlemock/include\gmock/gmock-generated-function-mockers.h:47:
    ../../third_party/googletest/src/googlemock/include\gmock/gmock-spec-builders.h(1600,12): error: call to implicitly-deleted copy constructor of 'MockSpec<testing::internal::FunctionMocker<webrtc::PacketReceiver::DeliveryStatus (webrtc::MediaType, rtc::CopyOnWriteBuffer, long long)>::F>' (aka 'MockSpec<webrtc::PacketReceiver::DeliveryStatus (webrtc::MediaType, rtc::CopyOnWriteBuffer, long long)>')
    return MockSpec<F>(this, ::std::make_tuple(std::move(m)...));
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../call/fake_network_pipe_unittest.cc(28,3): note: in instantiation of member function 'testing::internal::FunctionMocker<webrtc::PacketReceiver::DeliveryStatus (webrtc::MediaType, rtc::CopyOnWriteBuffer, long long)>::With' requested here
    MOCK_METHOD3(DeliverPacket,
    ^
    ../../third_party/googletest/src/googlemock/include\gmock/gmock-generated-function-mockers.h(602,30): note: expanded from macro 'MOCK_METHOD3'
    #define MOCK_METHOD3(m, ...) GMOCK_METHOD3_(, , , m, __VA_ARGS__)
    ^
    ../../third_party/googletest/src/googlemock/include\gmock/gmock-generated-function-mockers.h(237,48): note: expanded from macro 'GMOCK_METHOD3_'
    return GMOCK_MOCKER_(3, constness, Method).With(gmock_a1, gmock_a2, \
    ^
    ../../third_party/googletest/src/googlemock/include\gmock/gmock-spec-builders.h(1292,24): note: copy constructor of 'MockSpec<webrtc::PacketReceiver::DeliveryStatus (webrtc::MediaType, rtc::CopyOnWriteBuffer, long long)>' is implicitly deleted because field 'matchers_' has a deleted copy constructor
    ArgumentMatcherTuple matchers_;
    ^
    ..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include\tuple(351,5): note: copy constructor is implicitly deleted because 'tuple<testing::Matcher<webrtc::MediaType>, testing::Matcher<rtc::CopyOnWriteBuffer>, testing::Matcher<long long> >' has a user-declared move constructor
    tuple(tuple&&) = default;
    ^

    2021年3月10日
    回复
  • xuchen

    您好,博主,请问您有遇到webrtc.lib 编译后使用的时候回爆找不到符号

    错误 LNK2001 无法解析的外部符号 "void (__cdecl* std::__1::__libcpp_debug_function)(struct std::__1::__libcpp_debug_info const &)" (?__libcpp_debug_function@__1@std@@3P6AXAEBU__libcpp_debug_info@12@@ZEA) webrtc_demo C:\work\Dev\demo\webrtc_demo\webrtc.lib(thread.obj) 1

    2021年3月25日
    回复
    • Jeff

      @xuchen gn gen --ide=vs out/Default --args="is_clang=false use_lld=false" 禁用clang与lld看下

      2021年3月25日
      回复
      • xuchen

        @Jeff 感谢楼主,现在可以,其中原因还不太了解 ,还要再看看

        2021年3月25日
        回复
  • 光风霁月

    您好博主, 我按照您的方法已经成功编译出来了webrtc库, 但是默认的编译环境只有一个GN而且用的均是release环境。
    请问有方法可以使生成出来的sln ,可以将代码环境分为debug/release 吗, 然后手动通过VS编译这两个版本?

    2021年6月24日
    回复
  • flash91120

    楼主,能不能出一期qt上使用webrtc库的教程

    2022年5月12日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    回复 zjianjunxa 取消回复

    这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

    版权声明

    为支持原创,创作更好的文章,未经许可,禁止任何形式的转载与抄袭,如需转载请邮件私信!本人保留所有法定权利。违者必究!

    文章目录
    • 系统要求
    • Visual Studio安装
    • depot_tools安装
    • 获取WebRTC源码
      • 使用gclient sync可能遇到的问题
    • 编译
    • 代码更新
    • 引用WebRTC库
    • 总结
    • 参考
    最近评论
    ztt 发布于 1 个月前(04月05日) 你好,想看里面的视频和图片为什么没有显示呢?需要下flash吗还是什么。
    huowa222 发布于 2 个月前(03月26日) 同问
    邱国禄 发布于 3 个月前(02月17日) Receive Delta以0.25ms为单位,reference time以64ms为单位,kDe...
    啊非 发布于 4 个月前(12月30日) 大神,请教一个问题: constexpr int kBaseScaleFactor = Tran...
    啊非 发布于 4 个月前(12月30日) reference time:3字节,表示参考时间,以64ms为单位,但是 代码里面是 Trans...
    相关文章
    • 音视频开发入门:视频基础
    • 大话WebRTC
    • WebRTC音视频传输基础:NAT穿透
    • WebRTC资讯:H265支持进展
    • WebRTC研究:Audio level

    COPYRIGHT © 2024 jianchihu.net. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang