视频服务器(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

关于编译这里说的比较详细

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

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