第二個:https://github.com/mpromonet/webrtc-streamer
這個是c++的,比上面的go的麻煩一些。
目錄
總結、有效指令
1.下載depot_tools並初始化gclient
git config --global http.proxy "localhost:25378" //下次cmd打開不用再輸入
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
//設置環境變量path,添加depot_tools目錄
//假如上面的git clone指令出現問題:
//bad numeric config value 'purper' for 'color.ui': invalid unit
//使用 git config --global color.ui false
//打開另一個管理員權限的cmd
netsh
winhttp
set proxy 127.0.0.1:25378 "<local>" //"<local>"有什麼用不清楚
exit
set http_proxy=127.0.0.1:25378
set https_proxy=127.0.0.1:25378
gclient
//會下載東西,但是沒有任何提示,10分鐘左右吧,depot_tools文件夾會從50m變成500m多。
//下載完後(看文件夾是否不再變化)如果還是卡着,需要按ctr+c一下
//set DEPOT_TOOLS_UPDATE=0 //gclient前面加上這個的話,會出現python的問題
2.下載編譯webrtc
set GYP_MSVS_VERSION = 2017 # 指定vs版本
set GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise #vs安裝路徑,替換成自己的
set GYP_GENERATORS=msvs-ninja,ninja
//找個目錄
mkdir webrtc
cd webrtc
fetch --no-history webrtc
mkdir webrtc-checkout #這是創建一個目錄,創建之前最好cd到合適的地方
cd webrtc-checkout # 進入到我們剛剛創建的目錄中
fetch --nohooks webrtc # 獲取代碼
gclient sync # 當過程中斷時,我們可以使用該命令恢復並繼續
cd src
gn gen out/Default --ide=vs2017
ninja -C out/Default
3.下載編譯webrtc-streamer
下面是摸索的過程,雖然有很多資料,但還是會與自己環境不同,會碰到各種問題。
一、webrtc-streamer cmake
下載下來後
cmake . -DWEBRTCBUILD=<Release or Debug> -DWEBRTCROOT=<path to WebRTC>
make
安裝cmake。Git Bash cd到下載後的目錄,然後
cmake . -DWEBRTCBUILD=Debug -DWEBRTCROOT="D:\RTSPtoWebRTC\webrtc-streamer-master"
make
結果
查了一下,感覺可能是環境的問題。
我的環境是window10+vs2015+vs2017+unity2017+unity2019
--------------------------------------------------------------------------------------------------------------------
二、CMake+MinGW
參考:WINDOWS下CMake+MinGW64搭建C/C++編譯環境
參考:windows+CMake+mingw 搭建c c++開發環境
按教材下載並按照MinGW,並用mingw編譯。
cmake -G"MinGW Makefiles" .
碰到問題:
1.找不到MinGW
發現是用下載器安裝後,沒有添加環境變量,找到安裝目錄,把bin目錄加到Path裏面。
2.文件夾名稱必須是webrtc,不然無法進行下去。像下載下來是是webrtc-streamer-master.zip,解壓到當前文件夾,是webrtc-streamer-master,要改名爲webrtc。
按我理解因爲CMakeLists.txt裏面的開頭部分
3.子文件夾中是空的,如解壓後live555helpler裏面就是空的,因爲我是從網頁上下載下來的。
live555helpler本身是另一個github地址的東西,相當於鏈接。
我是用GitHub Desktop下載下來就是完整的了,用git在命令行下載應該也是可以的吧
4.cmake執行導致最後出錯。
進行不下去了
-------------------------------------------------------------------------------------------------------------------------------
三、下載depot_tools
發現無忽略了前面兩步
fetch webrtc實際上是下載webrtc庫,可能和那個WEBRTC_LIBRARY有關。
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
下載depot_tools,結果不行,還是被牆了 Timed out。
關鍵是網頁(vpn)訪問 https://chromium.googlesource.com/chromium/tools/depot_tools.git 是可以訪問的
好像要設置git的代理,參考:https://blog.csdn.net/natahew/article/details/82627364
git config --global http.proxy "localhost:1080"
我也是用shadowsocks的啊,不行。
設置後變成:
Connection was reset
vpn+git 走不下去
--------------------------------------------------------------------------------------------------------------------
四、fetch webrtc
總之目的是下載webrtc吧 google一下fetch webrtc
https://webrtc.org/native-code/development/
https://webrtc.org/native-code/development/prerequisite-sw/
http://dev.chromium.org/developers/how-tos/install-depot-tools,接下來要vpn了....
在最後一個,初始化gclient出問題了....哭
又是網絡連接,
然後現在vpn還連不上了.....哭
後來一次能連上vpn,再次測試,結果
總之還是不行
-----------------------------------------------------------------------------------------------------------------------------------
五、gclient代理設置
有人碰到一樣的問題,參考:gclient運行更新CIPD一直失敗,求高手指點
參考:How to fetch chromium codes on windows with proxy.
這個應該可以的纔對啊,很好的描述的問題,還有具體的指令。
還是不行,問題出在哪裏?ip?端口?
現在的問題是命令行下無法使用vpn。
本來,vpn連接上的了話,應該都能連接上的。
我的vpn有問題?實際上我用的是Jikess-windows.zip,但按我理解他底層也是用Shadowsocks纔對啊
弄不懂設置代理時端口應該用1080還是25378。
------------------------------------------------------------------------------------------------------
參考:https://github.com/shadowsocks/shadowsocks-windows/issues/1489(windows終端命令行下如何使用代理?)
首先ping不能做測試依據,ping通網絡應該是通的,ping不通,不說明vpn不通。
用curl測試,要先下載一個window版本,放到環境變量的path裏面。
結論來說,啓動Jikess時應該設置25378,啓動Shadowsocks時設置1080,怪不得網上的都是1080呢。
那我在前面使用Jikess的情況下,大部分設置1080,偶爾也有設置25378測試一下,說不定錯過了正確的方法。
還真的是.......
這裏這麼設置起來,就能git下載了。
接下來是關鍵的gclient
結果卡着了,還取消不了。
關閉還會彈出這樣的
---------------------------------------------------------------------------------------------------------
用cmd試試,參考的是How to fetch chromium codes on windows with proxy.
gclient前還要加上set DEPOT_TOOLS_UPDATE=0,參考:depot_tools更新失敗
不然會卡一下,雖然也沒關係,好像也能把東西下載下來,gclient第一次運行主要是要下載git 和 python
下載成功了 有500多m,多了個bootstrap-3_8_0b1_chromium_1_bin文件夾
------------------------------------------------------------------------------------------------------------------
刪除重新嘗試,結果不設置代理的話超時,設置代理的話說python不是命令.......怎麼回事?
操作過程中好像也有碰到過,cmd重新打開一個,就能夠下載了,沒注意怎麼回事。
試着重新下載一下,發現git 返回503錯誤。
然後發現網頁、釘釘都無法上網了。
說明哪裏設置錯了,導致直接不能上網了?
而且很奇怪,這時候cmd裏面,ping www.baidu.com可以,curl www.baidu.com可以。git bash裏面,ping www.baidu.com可以,curl www.baidu.com不行,返回的內容提示一串字符串,好像是說應該代理的關係,不能上網。
重啓電腦,可以上網,git下載了,
再打開一個管理員的cmd
總之需要的指令有
git config --global http.proxy "localhost:25378" //下次cmd打開不用再輸入
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
//設置環境變量path,添加depot_tools目錄
//打開另一個管理員權限的cmd
netsh
winhttp
set proxy 127.0.0.1:25378 "<local>" //"<local>"有什麼用不清楚
exit
set http_proxy=127.0.0.1:25378
set https_proxy=127.0.0.1:25378
gclient
//會下載東西,但是沒有任何提示,10分鐘左右吧,depot_tools文件夾會從50m變成500m多。
//下載完後(看文件夾是否不再變化)如果還是卡着,需要按ctr+c一下
//set DEPOT_TOOLS_UPDATE=0 //gclient前面加上這個的話,會出現python的問題
好了 總算是完成了第一步,下載depot_tools並初始化gclient。
使用gclient和代理下載Chromium代碼,這個資料比前面的都全面,沒有早點找到它,
-----------------------------------------------------------------------------------------------------------------
後來在另一臺電腦上執行
git config --global http.proxy "localhost:25378" //下次cmd打開不用再輸入
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
時出現問題
需要使用 git config --global color.ui false
不同環境,不同問題,這個是最麻煩的。
-----------------------------------------------------------------------------------------------------------------------------------------------------
六、下載webrtc
//找個目錄
mkdir webrtc
cd webrtc
fetch --no-history webrtc
27%就停着了...這時depot_tools的大小有3.79G了,而webrtc文件夾則是空的....
按一下ctr+c,然後就繼續了
這算是下載好了吧,depot_tools大小有快10G了,多了個src文件夾,
用treesize分析一下,發現大部分是.git文件夾的空間
都說fetch的文件是當前的文件夾,但是我的是到depot_tools裏面的,然後看來一下,注意到不知怎麼的調到depot_tools裏面了
兩個選擇,拷貝文件到webrtc中,和重新在fetch一下。
前面的下載了10G吧,從早上11點到下午3點,4小時。重新下載倒也沒關係。我先試試手動來。
----------------------------------------------------------------------------------------------------------------------------
七、下載編譯webrtc-streamer。
在cmd中用git clone指令下載,因爲有鏈接其他子模塊,再加上下載子模塊的指令
參考:github上使用git clone下載所有鏈接到的子模塊
https://github.com/mpromonet/webrtc-streamer.git
cd webrtc-streamer
git submodule update --init --recursive
在下載live555helper時卡了一下,需要按ctr-c
下載完webrtc-streamer後,現在有了三個文件夾webrtc-streamer,webrtc(空的),depot_tools(10G)。
先把depot_tools裏面的全部複製一份到webrtc中,刪除.git文件夾,剩下3.2G,壓縮一下,備份。壓縮後大小時1.03G,壓縮率37%。
接下來的問題是,webrtc-streamer要不要改名webrtc呢,原來我不知道有個fetch webrtc,現在有了,感覺不用改名把。
cd webrtc-streamer
cmake -G"MinGW Makefiles" .
結果:
和前面fetch webrtc最後的錯誤相關,要想辦法處理一下了。
Toolchain is out of data。Run "gclient runhooks" to update toolchain,
or set DEPOT_TOOLS_WIN_TOOLCHAIN=0 to use the locally installed toolchain.
查資料,百度DEPOT_TOOLS_WIN_TOOLCHAIN,馬上就出來一堆的DEPOT_TOOLS_WIN_TOOLCHAIN=0,看來這一部缺少了。
DEPOT_TOOLS_WIN_TOOLCHAIN = 0
GYP_MSVS_VERSION = 2017
GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
我先只設置DEPOT_TOOLS_WIN_TOOLCHAIN = 0
然後cmake,結果:
考慮到CMakeLists.txt裏面的
set (WEBRTCOBJS ${WEBRTCROOT}/src/out/${WEBRTCBUILD}/obj)
...
find_library(WEBRTC_LIBRARY NAMES webrtc PATHS ${WEBRTCOBJS})
target_link_libraries (${PROJECT_NAME} ${WEBRTC_LIBRARY})
現在算是知道什麼意思了,預計在文件夾F:\git\webrtc\src\out\Release裏面應該有個webrtc文件夾,這個就是要找的WEBRTC_LIBRARY了。也就是我要先編譯成功webrtc。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
八、windows編譯webrtc
設置環境變量
GYP_MSVS_VERSION = 2017
GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
生成解決方案
gn gen out/Default
結果
這臺電腦上的VS2017是安裝Unity2019時裝的,沒裝C++環境吧。
修改VS2017,安裝C++後
google資料,參考 https://blog.sdlsj.net/archives/cef/chromium-embedded-framework-complie/
編譯時可能會出現找不到LASTCHANGE.committime這一文件,
在C:\code\chromium_git\chromium\src\build\util下
執行python lastchange.py -o LASTCHANGE即可。
運行後:
在刪除過.git的webrtc裏面執行的話,不行。
那說明這個過程中不能刪除.git文件夾
那還得再拷貝一下,再gn一下。
生成的是
沒有上面教程(https://www.cnblogs.com/Forever-Kenlen-Ja/p/7653144.html)的.sln文件。
編譯生成可執行文件 執行 ninja -C out/Default chrome
使用指令
ninja -C out/Default webrtc
結果:
後面也是找不到***.obj文件
使用指令,參考:在windows上vs2017 編譯webrtc
ninja -C out/Default
結果:
在剛剛的參考的頁面裏面看到一個
測試一下,
gn gen out/Default --ide=vs2017
結果,
有all.sln文件,上上個參考頁面寫的是生產all.sln,但是命令裏面沒有加--ide=vs2017
環境變量我也都有設置的......................
---------------------------------------------------------------------------------------------------------------------------------------
下一步,ninja -C out/Default
找不到noise_tracks/city.wav,在我的下載文件中找到city.wav.sha1...
找不到相關資料 雖然有一些missing and on known rule to make it。
用vs2017打開all.sln,生成結果也是失敗
卡住了....
----------------------------------------------------------------------------------------------------------------------------------------
參考:webrtc源碼編譯+vs2017+生成sln - 靜夜思2012 - 博客園
這臺電腦爲了做UWP開發,安裝過Window SDK 10
關於編譯這裏說的比較詳細
-----------------------------------------------------------------------------------------------------------------------------------------