从零开始实现内网远程桌面①:编译kvswebrtc

  市面上常见的桌面助手有:Windows远程桌面/Vnc/Teamviewer/向日葵等。

 

  经过技术分析,我们发现支持内网的助手其网络交互模式与webrtc十分类似,有mediastream用于传输画面,然后用datachannel传输键鼠指令以及可能有的文件传输。因此我们底层使用webrtc来构建

 

  由于我一直提倡“知其所以然”。所以我选用开源的项目来构建

 

  kvswebrtc依赖于openssl、srtp、usrsctp、kvspic。我们挨个来编译。

  先下载所有代码(我使用了镜像加速),其实都是github:

cd /d H:\whenyoulink

git clone https://github.com.cnpmjs.org/openssl/openssl.git -b OpenSSL_1_1_1g

git clone https://github.com.cnpmjs.org/cisco/libsrtp.git

git clone https://github.com.cnpmjs.org/sctplab/usrsctp.git

cd usrsctp

git reset --hard 939d48f9632d69bf170c7a84514b312b6b42257d

cd ..

git clone https://github.com.cnpmjs.org/awslabs/amazon-kinesis-video-streams-pic.git

cd amazon-kinesis-video-streams-pic

git reset --hard bdad27051d0ef5b823e1916d02b40fc57678156a

cd ..

git clone https://github.com.cnpmjs.org/warmcat/libwebsockets.git -b v3.2.3

git clone https://github.com.cnpmjs.org/awslabs/amazon-kinesis-video-streams-producer-c.git

cd amazon-kinesis-video-streams-producer-c

git 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++编译器)

  从零开始实现内网远程桌面①:编译kvswebrtc

 

cd /d H:\whenyoulink

cd openssl

perl Configure VC-WIN32 no-asm --prefix=%cd%\_install --openssldir=%cd%\openssldir

nmake && 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。

  从零开始实现内网远程桌面①:编译kvswebrtc

 

   还需要改动一下cmakelists.txt,不查找gstreamer

  从零开始实现内网远程桌面①:编译kvswebrtc

xcopy /e /y H:\whenyoulink\amazon-kinesis-video-streams-pic\install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\include

xcopy /e /y H:\whenyoulink\amazon-kinesis-video-streams-producer-c\src\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\include

xcopy /e /y H:\whenyoulink\libsrtp\install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\include

xcopy /e /y H:\whenyoulink\libwebsockets\install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\include

xcopy /e /y H:\whenyoulink\openssl\_install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\include

xcopy /e /y H:\whenyoulink\usrsctp\install\include H:\whenyoulink\amazon-kinesis-video-streams-webrtc-sdk-c\src\include

cd /d H:\whenyoulink

cd amazon-kinesis-video-streams-webrtc-sdk-c

mkdir build && cd build

cmake -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项目

  从零开始实现内网远程桌面①:编译kvswebrtc

  然后就创建两个文件,直接生成

  从零开始实现内网远程桌面①:编译kvswebrtc

 

 

  从零开始实现内网远程桌面①:编译kvswebrtc

 

  最后修改时间 2020-12-12 21:05:55

以上是 从零开始实现内网远程桌面①:编译kvswebrtc 的全部内容, 来源链接: utcz.com/a/76057.html

回到顶部