从零开始实现内网远程桌面①:编译kvswebrtc
市面上常见的桌面助手有:Windows远程桌面/Vnc/Teamviewer/向日葵等。
经过技术分析,我们发现支持内网的助手其网络交互模式与webrtc十分类似,有mediastream用于传输画面,然后用datachannel传输键鼠指令以及可能有的文件传输。因此我们底层使用webrtc来构建
由于我一直提倡“知其所以然”。所以我选用开源的项目来构建
kvswebrtc依赖于openssl、srtp、usrsctp、kvspic。我们挨个来编译。
先下载所有代码(我使用了镜像加速),其实都是github:
cd /d H:\whenyoulinkgit clone https:
//github.com.cnpmjs.org/openssl/openssl.git -b OpenSSL_1_1_1ggit clone https:
//github.com.cnpmjs.org/cisco/libsrtp.gitgit clone https:
//github.com.cnpmjs.org/sctplab/usrsctp.gitcd usrsctpgit reset --hard 939d48f9632d69bf170c7a84514b312b6b42257d
cd ..git clone https:
//github.com.cnpmjs.org/awslabs/amazon-kinesis-video-streams-pic.gitcd amazon-kinesis-video-streams-picgit reset --hard bdad27051d0ef5b823e1916d02b40fc57678156a
cd ..git clone https:
//github.com.cnpmjs.org/warmcat/libwebsockets.git -b v3.2.3git clone https:
//github.com.cnpmjs.org/awslabs/amazon-kinesis-video-streams-producer-c.gitcd amazon-kinesis-video-streams-producer-cgit reset --hard 15f124e5a5561679cf001bb36c2c758073740681
cd ..git clone --recursive https:
//github.com.cnpmjs.org/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git
然后先编译几个依赖库(amazon-kinesis-video-streams-producer-c不需要编译,只用其头文件;libwebsockets其实编译只是为了提取头文件,也不需要使用其库文件)
(当然,需要从visual studio的命令行启动,而且需要安装c++编译器)
cd /d H:\whenyoulinkcd opensslperl Configure VC-WIN32 no-asm --prefix
=%cd%\_install --openssldir=%cd%\openssldirnmake && nmake install
cd ..cd libsrtp
mkdir build && cd build
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%\..\install -DENABLE_OPENSSL=TRUE -DBUILD_SHARED_LIBS=FALSE -DOPENSSL_ROOT_DIR=%cd%\..\..\openssl\_install ..
nmake && nmake install
cd ..\..
cd usrsctp
mkdir build && cd build
cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=%cd%\..\install -DCMAKE_BUILD_TYPE=Release -Dsctp_werror=0 ..
nmake && nmake install
cd ..\..
cd amazon-kinesis-video-streams-pic
mkdir build && cd build
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%\..\install -DBUILD_DEPENDENCIES=OFF ..
nmake && nmake install
cd ..\..
cd libwebsockets
mkdir build && cd build
cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=%cd%\..\install -DLWS_WITH_HTTP2=1 -DLWS_HAVE_HMAC_CTX_new=1 -DLWS_HAVE_SSL_EXTRA_CHAIN_CERTS=1 -DLWS_HAVE_OPENSSL_ECDH_H=1 -DLWS_HAVE_EVP_MD_CTX_free=1 -DLWS_WITHOUT_SERVER=1 -DLWS_WITHOUT_TESTAPPS=1 -DLWS_WITH_THREADPOOL=1 -DLWS_WITHOUT_TEST_SERVER_EXTPOLL=1 -DLWS_WITHOUT_TEST_PING=1 -DLWS_WITHOUT_TEST_CLIENT=1 -DLWS_WITH_STATIC=1 -DLWS_WITH_SHARED=0 -DLWS_STATIC_PIC=1 -DLWS_WITH_ZLIB=0 -DLWS_HAVE_EVENTFD=0 -DLWS_WITH_MBEDTLS=OFF -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=%cd%\..\..\openssl\_install ..
nmake && nmake install
cd ..\..
然后改一下代码再编译kvswebrtc,官方代码有个bug。
还需要改动一下cmakelists.txt,不查找gstreamer
xcopy /e /y H:\whenyoulink\amazon-kinesis-video-streams-pic\install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\includexcopy /e /y H:\whenyoulink\amazon-kinesis-video-streams-producer-c\src\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\includexcopy /e /y H:\whenyoulink\libsrtp\install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\includexcopy /e /y H:\whenyoulink\libwebsockets\install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\includexcopy /e /y H:\whenyoulink\openssl\_install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\includexcopy /e /y H:\whenyoulink\usrsctp\install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\includecd /d H:\whenyoulinkcd amazon-kinesis-video-streams-webrtc-sdk-cmkdir build && cd buildcmake -G
"NMake Makefiles" -DBUILD_DEPENDENCIES=OFF -DBUILD_SAMPLE=OFF -DOPENSSL_ROOT_DIR=%cd%\..\..\openssl\_install -DSRTP_LIBRARIES=%cd%\..\..\libsrtp\install -DUsrsctp=%cd%\..\..\usrsctp\install -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%\..\install ..nmake && nmake install
最后我们把静态库链接成动态库,到时候给C#用。
我们用vs创建一个dll项目
然后就创建两个文件,直接生成
最后修改时间 2020-12-12 21:05:55
以上是 从零开始实现内网远程桌面①:编译kvswebrtc 的全部内容, 来源链接: utcz.com/a/76057.html