從零開始實現一個遠程桌面工具①:編譯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++編譯器)

  

 

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。

  

 

   還需要改動一下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\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項目

  

  然后就創建兩個文件,直接生成

  

 

 

  

 

  最后修改時間 2020-12-12 21:05:55


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM