首页 > WebRTC > Windows平台WebRTC编译-VS2017
2019
03-14

Windows平台WebRTC编译-VS2017

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

系统要求

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

Visual Studio安装

WebRTC用到了很多C++最新特性,所以编译最新WebRTC代码VS要求为2017版本。我用的是VS2017社区版。安装VS2017时选择自定义安装,必须勾选如下几项:

  • 10.0.17134 或以上的Win10 SDK,后面还要安装调试工具
  • MFC以及ATL这两项
  • 其他选项可以选择安准。如下是我的安装配置。
    Windows平台WebRTC编译-VS2017 - 第1张  | 剑痴乎

安装完VS2017后,必须安装SDK调试工具。打开控制面板->程序与功能,找到刚才安装的Windows Software Development Kit,鼠标右键->change。
Windows平台WebRTC编译-VS2017 - 第2张  | 剑痴乎

勾选Debugging Tools For Windows,然后点击change。
Windows平台WebRTC编译-VS2017 - 第3张  | 剑痴乎

depot_tools安装

下载depot_tools然后解压到某个目录,比我的解压到E盘根目录。接着将该depot_tools目录的路径加到系统环境变量Path里,然后把该路径移到最前面(避免已安装的python与git造成影响)。
Windows平台WebRTC编译-VS2017 - 第4张  | 剑痴乎

然后新建一个系统环境变量: DEPOT_TOOLS_WIN_TOOLCHAIN ,值设置为0,这是为了告诉depot_tools使用我们本机的VS进行编译。
Windows平台WebRTC编译-VS2017 - 第5张  | 剑痴乎

获取WebRTC源码

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

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

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

再接着设置一些环境变量。

其中GYP_MSVS_OVERRIDE_PATH是我们安装的VS2017路径。

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

这一过程是个漫长的等待,要下的东西将近10G,包括源码以及一些测试的音视频文件资源等。
Windows平台WebRTC编译-VS2017 - 第6张  | 剑痴乎

使用gclient sync这一步得注意下,可能会报类似如下错误:

Unicode字符编码问题,python的一个bug,因为很多人系统语言都是中文的,所以得按如下设置,把系统区域改为英文,然后重启即可。
Windows平台WebRTC编译-VS2017 - 第7张  | 剑痴乎

编译

生成VS2017工程文件:

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

执行编译命令:

Windows平台WebRTC编译-VS2017 - 第8张  | 剑痴乎

用VS2017打开:
Windows平台WebRTC编译-VS2017 - 第9张  | 剑痴乎
可以看到众多工程,到此算是完成了。找到我们感兴趣的,就可以用VS单步调试,跟踪代码运行了。这么多宝贝够研究很久了。

代码更新

总结

总之WebRTC在Windows上的编译很考验耐心,也很苛刻,需要电脑性能够好,有个好代理。

参考

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

最后编辑:
作者:Jeff
Avatar
管理员——代码为剑,如痴如醉

41 Responses to Windows平台WebRTC编译-VS2017

  1. Avatar jih488 says:
    Google Chrome 73.0.3683.86 Google Chrome 73.0.3683.86 Windows 7 x64 Edition Windows 7 x64 Edition

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

  2. Avatar Jeff says:
    Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition

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

  3. Avatar jih488 says:
    Google Chrome 73.0.3683.86 Google Chrome 73.0.3683.86 Windows 7 x64 Edition Windows 7 x64 Edition

    谢谢博主,已收到!

  4. Avatar iosnower says:
    Firefox 66.0 Firefox 66.0 Windows 10 x64 Edition Windows 10 x64 Edition

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

  5. Avatar fk says:
    Firefox 65.0 Firefox 65.0 Windows 7 x64 Edition Windows 7 x64 Edition

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

  6. Avatar 昨日围城 says:
    Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 Windows 10 x64 Edition Windows 10 x64 Edition

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

  7. Avatar 悠哉嗑瓜子 says:
    Google Chrome 74.0.3729.108 Google Chrome 74.0.3729.108 Windows 10 x64 Edition Windows 10 x64 Edition

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

  8. Avatar rao says:
    Google Chrome 69.0.3497.81 Google Chrome 69.0.3497.81 Windows 7 x64 Edition Windows 7 x64 Edition

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

  9. Avatar 共惜芳华 says:
    QQbrowser 10.4.3587.400 QQbrowser 10.4.3587.400 Windows 10 x64 Edition Windows 10 x64 Edition

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

  10. Avatar 徐对对对 says:
    Google Chrome 75.0.3770.100 Google Chrome 75.0.3770.100 Windows 7 x64 Edition Windows 7 x64 Edition

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

  11. Avatar zjianjunxa says:
    Google Chrome 75.0.3770.100 Google Chrome 75.0.3770.100 Windows 10 x64 Edition Windows 10 x64 Edition

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

  12. Avatar 曾祥波 says:
    Google Chrome 75.0.3770.100 Google Chrome 75.0.3770.100 Windows 7 x64 Edition Windows 7 x64 Edition

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

  13. Avatar MichelleHong says:
    Google Chrome 75.0.3770.142 Google Chrome 75.0.3770.142 Windows 10 x64 Edition Windows 10 x64 Edition

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

  14. Avatar Lost says:
    Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 Windows 7 x64 Edition Windows 7 x64 Edition

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

  15. Avatar Sky says:
    Google Chrome 75.0.3770.142 Google Chrome 75.0.3770.142 Mac OS X  10.13.6 Mac OS X 10.13.6

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

  16. Avatar zhang says:
    Google Chrome 76.0.3809.100 Google Chrome 76.0.3809.100 Windows 10 x64 Edition Windows 10 x64 Edition

    ss代理是什么意思,shadowsocks?

  17. Avatar 夜孤黎 says:
    Google Chrome 76.0.3809.100 Google Chrome 76.0.3809.100 Windows 7 x64 Edition Windows 7 x64 Edition

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

  18. Avatar 94nbzd says:
    Firefox 69.0 Firefox 69.0 Windows 10 x64 Edition Windows 10 x64 Edition

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

  19. Avatar zm168520 says:
    Mozilla Compatible Mozilla Compatible iPhone iOS 13.1 iPhone iOS 13.1

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

  20. Avatar lowkey says:
    Google Chrome 78.0.3904.108 Google Chrome 78.0.3904.108 Windows 10 x64 Edition Windows 10 x64 Edition

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

  21. Avatar shuilan says:
    Google Chrome 79.0.3945.88 Google Chrome 79.0.3945.88 Windows 10 x64 Edition Windows 10 x64 Edition

    同求一份 shuilan0066@126.com

  22. Avatar xiaopaopaotang says:
    Google Chrome 78.0.3904.108 Google Chrome 78.0.3904.108 Windows 10 x64 Edition Windows 10 x64 Edition

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

  23. Avatar ziqzhang says:
    Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition

    gclient sync 报错

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

    • Avatar ziqzhang says:
      Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition

      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>

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

      • Avatar Jeff says:
        Google Chrome 78.0.3904.70 Google Chrome 78.0.3904.70 Windows 10 x64 Edition Windows 10 x64 Edition

        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
        这一步正确设置了吗,看你报错是没找到VS路径

      • Avatar ziqzhang says:
        Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition

        ./build/util/lastchange.py build/util/LASTCHANGE

        执行这个脚本

        • Avatar ziqzhang says:
          Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition

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

    • Avatar ziqzhang says:
      Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition

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

  24. Avatar ziqzhang says:
    Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition

    gclient sync 报错

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

  25. Avatar ziqzhang says:
    Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition

    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, 你是这个文件吗?

    • Avatar Jeff says:
      Google Chrome 78.0.3904.70 Google Chrome 78.0.3904.70 Windows 10 x64 Edition Windows 10 x64 Edition

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

      • Avatar ziqzhang says:
        Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition

        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 文件,但我们按照步骤做的,没做任务删除操作,你又这个文件吗?

留下一个回复

你的email不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.