Windows平台WebRTC编译-VS2017
轉(zhuǎn)載網(wǎng)站:https://blog.jianchihu.net/webrtc-build-vs2017.html
在音視頻領(lǐng)域,想深入研究的話,必定會(huì)接觸WebRTC。WebRTC是一個(gè)龐大的工程,就像是音視頻領(lǐng)域的百科全書,音視頻采集,編解碼,傳輸,渲染等一條龍?jiān)赪ebRTC里都有,而且WebRTC還有很多先進(jìn)的音視頻處理算法。由于WebRTC代碼過于龐大,所以最好單步調(diào)試跟蹤代碼運(yùn)行,這樣才可以更好地學(xué)習(xí)WebRTC,否則很難有頭緒。工欲善其事必先利其器,作為調(diào)試神器,宇宙第一IDE Visual Studio必不可少。所以本篇文章主要講下如何在Windows上編譯WebRTC,同時(shí)得到VS工程,然后調(diào)試。
系統(tǒng)要求
- Win7及以上64位系統(tǒng)。
- 內(nèi)存至少8G,當(dāng)然越大越好。
- 100G磁盤空間(NTFS格式),不能是FAT32,因?yàn)闀?huì)生成大于4G的文件。
Visual Studio安裝
WebRTC用到了很多C++最新特性,所以編譯最新WebRTC代碼VS要求為2017版本。我用的是VS2017社區(qū)版。安裝VS2017時(shí)選擇自定義安裝,必須勾選如下幾項(xiàng):
其他選項(xiàng)可以選擇安準(zhǔn)。如下是我的安裝配置。
- 10.0.17134 或以上的Win10 SDK,后面還要安裝調(diào)試工具
- MFC以及ATL這兩項(xiàng)
安裝完VS2017后,必須安裝SDK調(diào)試工具。打開控制面板->程序與功能,找到剛才安裝的Windows Software Development Kit,鼠標(biāo)右鍵->change。
勾選Debugging Tools For Windows,然后點(diǎn)擊change。
depot_tools安裝
下載depot_tools然后解壓到某個(gè)目錄,比我的解壓到E盤根目錄。接著將該depot_tools目錄的路徑加到系統(tǒng)環(huán)境變量Path里,然后把該路徑移到最前面(避免已安裝的python與git造成影響)。
然后新建一個(gè)系統(tǒng)環(huán)境變量:?DEPOT_TOOLS_WIN_TOOLCHAIN?,值設(shè)置為0,這是為了告訴depot_tools使用我們本機(jī)的VS進(jìn)行編譯。
獲取WebRTC源碼
由于WebRTC的源碼地址被墻了,所以需要通過代理才能得到源碼。后面都是命令行操作,打開cmd窗口,由于我用的是ss代理,在cmd窗口我按如下設(shè)置:
?
| 1 2 | set http_proxy=127.0.0.1:1080 set https_proxy=127.0.0.1:1080 |
設(shè)置當(dāng)前cmd窗口代理上網(wǎng),如果cmd窗口關(guān)閉了重開得重新設(shè)置。當(dāng)然了,也可以設(shè)置系統(tǒng)全局代理上網(wǎng)。其他代理方法也類似。如果是VPN之類非代理,就不用這樣設(shè)置了。
接著執(zhí)行g(shù)client命令,安裝編譯需要用到的一些工具,比如git以及python。
?
| 1 | gclient |
再接著設(shè)置一些環(huán)境變量。
?
| 1 2 3 | 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 |
?
其中GYP_MSVS_OVERRIDE_PATH是我們安裝的VS2017路徑。
然后cd到要放源碼的地方(要遵守前面說的磁盤要求),執(zhí)行:
?
| 1 2 3 4 | mkdir webrtc-checkout cd webrtc-checkout fetch --nohooks webrtc gclient sync |
這一過程是個(gè)漫長(zhǎng)的等待,要下的東西將近10G,包括源碼以及一些測(cè)試的音視頻文件資源等。
使用gclient sync這一步得注意下,可能會(huì)報(bào)類似如下錯(cuò)誤:
?
| 1 | UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal not in range(128) |
Unicode字符編碼問題,python的一個(gè)bug,因?yàn)楹芏嗳讼到y(tǒng)語言都是中文的,所以得按如下設(shè)置,把系統(tǒng)區(qū)域改為英文,然后重啟即可。
編譯
生成VS2017工程文件:
?
| 1 2 | cd src gn gen --ide=vs out/Default |
可以在src\out\Default\ 下得到 all.sln解決方案文件。
執(zhí)行編譯命令:
?
| 1 | ninja -C out/Default |
用VS2017打開:
可以看到眾多工程,到此算是完成了。找到我們感興趣的,就可以用VS單步調(diào)試,跟蹤代碼運(yùn)行了。這么多寶貝夠研究很久了。
代碼更新
?
?
| 1 2 3 | git checkout master git pull origin master gclient sync |
?
總結(jié)
總之WebRTC在Windows上的編譯很考驗(yàn)?zāi)托?#xff0c;也很苛刻,需要電腦性能夠好,有個(gè)好代理。
參考
1.?WebRTC Native code Development
2.?Chromium’s build instructions for Windows
總結(jié)
以上是生活随笔為你收集整理的Windows平台WebRTC编译-VS2017的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宠物管理系统CLI版本(Python实现
- 下一篇: Windows上提升舒适度的好物分享(没