視頻服務器(4) webrtc-streamer(windows下卡住了)

第二個:https://github.com/mpromonet/webrtc-streamer

這個是c++的,比上面的go的麻煩一些。

 

目錄

總結、有效指令

一、webrtc-streamer cmake

二、CMake+MinGW

三、下載depot_tools

四、fetch webrtc

五、gclient代理設置

總之需要的指令有

六、下載webrtc

七、下載編譯webrtc-streamer。

八、windows編譯webrtc


總結、有效指令

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代理設置

參考:win10安裝depot_tools

有人碰到一樣的問題,參考:gclient運行更新CIPD一直失敗,求高手指點

參考:gclient 設置代理問題

參考: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,看來這一部缺少了。

參考:VS2017 編譯 chromium和webrtc

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

關於編譯這裏說的比較詳細

-----------------------------------------------------------------------------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章