第二个: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 "" //""有什么用不清楚
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
下面是摸索的过程,虽然有很多资料,但还是会与自己环境不同,会碰到各种问题。
下载下来后
cmake . -DWEBRTCBUILD= -DWEBRTCROOT=
make
安装cmake。Git Bash cd到下载后的目录,然后
cmake . -DWEBRTCBUILD=Debug -DWEBRTCROOT="D:\RTSPtoWebRTC\webrtc-streamer-master"
make
结果
查了一下,感觉可能是环境的问题。
我的环境是window10+vs2015+vs2017+unity2017+unity2019
--------------------------------------------------------------------------------------------------------------------
参考: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执行导致最后出错。
进行不下去了
-------------------------------------------------------------------------------------------------------------------------------
发现无忽略了前面两步
fetch webrtc实际上是下载webrtc库,可能和那个WEBRTC_LIBRARY有关。
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
下载depot_tools,结果不行,还是被墙了 Timed out。
关键是网页()访问 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"
我也是用s的啊,不行。
设置后变成:
Connection was reset
+git 走不下去
--------------------------------------------------------------------------------------------------------------------
总之目的是下载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,接下来要了....
在最后一个,初始化gclient出问题了....哭
又是网络连接,
然后现在还连不上了.....哭
后来一次能连上,再次测试,结果
总之还是不行
-----------------------------------------------------------------------------------------------------------------------------------
参考:win10安装depot_tools
有人碰到一样的问题,参考:gclient运行更新CIPD一直失败,求高手指点
参考:gclient 设置代理问题
参考:How to fetch chromium codes on windows with proxy.
这个应该可以的才对啊,很好的描述的问题,还有具体的指令。
还是不行,问题出在哪里?ip?端口?
现在的问题是命令行下无法使用。
本来,连接上的了话,应该都能连接上的。
我的有问题?实际上我用的是Jikess-windows.zip,但按我理解他底层也是用Shadowsocks才对啊
弄不懂设置代理时端口应该用1080还是25378。
------------------------------------------------------------------------------------------------------
参考:https://github.com/s/s-windows/issues/1489(windows终端命令行下如何使用代理?)
首先ping不能做测试依据,ping通网络应该是通的,ping不通,不说明不通。
用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 "" //""有什么用不清楚
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
不同环境,不同问题,这个是最麻烦的。
-----------------------------------------------------------------------------------------------------------------------------------------------------
//找个目录
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小时。重新下载倒也没关系。我先试试手动来。
----------------------------------------------------------------------------------------------------------------------------
在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。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
设置环境变量
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
关于编译这里说的比较详细
-----------------------------------------------------------------------------------------------------------------------------------------