在嵌入式設備中實現webrtc的第三種方式①


  最近兩年,我對於網絡知識,包括底層協議學習比較多,webrtc這種幾乎是使用到了所有層面網絡協議的技術也逐漸進入我的視野。

  之前我提出了兩種在嵌入式設備上實現webrtc的方式,一是用官方代碼,然后改編譯鏈,但是這條路是留給c++高玩的,因為它的代碼是用最新的c++17寫的,你必須重寫adm(Audio Device Manager),我其實根本不會c++,平時只是改改同事的代碼,所以路是斷的;第二種是使用janus(實際上用到的就一兩百行代碼,我是直接參考webrtcgateway)和rtcdc組合拳,這個我根本沒法跟大家解釋原理,因為這條路我雖然走通了,但比前一條路應該是難太多,它要求你懂webrtc協議棧所有網絡協議,然后還得會使用和整合數個三方庫,期間你會移植十幾個庫……而且最終你還面臨沒有jitterbuffer的窘境,而且還得自己做aec(Acoustic Echo Cancellation)

  實際上第二條路是很舒服的,如果走通,你會發現你進入了一個新境界。

 

  好,廢話說太多了,進入正題,今天我介紹一個目前看起來更優於前兩個方法的webrtc嵌入式實現。他就是amazon-kinesis提供的設備端sdk。

  https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c

  大家可以看作是第二種方式的優化版本,畢竟是大廠,肯定比我們自己擰螺絲更健壯。

 

  這篇文章主要是介紹如果編譯它,我仍然以海思系列芯片為例。

  (首先我們可能需要一個牆外的服務器,我是在阿里雲買了一周的美國ecs,因為中途git clone太慢了)

 

  1.先拉取代碼

  

git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git

  2.然后更改srtp的CMakeLists,不生成測試文件(因為它link.txt里面會寫-lpthread,我的嵌入式編譯器不認)

  

-D TEST_APPS=OFF

  3.執行cmake

  

export CC=arm-himix200-linux-gcc CXX=arm-himix200-linux-g++
mkdir build && cd build
cmake .. -DBUILD_SAMPLE=FALSE -DBUILD_STATIC_LIBS=TRUE -DBUILD_OPENSSL=TRUE -DBUILD_OPENSSL_PLATFORM=linux-generic32 -DBUILD_LIBSRTP_HOST_PLATFORM=x86_64-unknown-linux-gnu -DBUILD_LIBSRTP_DESTINATION_PLATFORM=arm-unknown-linux-uclibcgnueabi

  其中BUILD_SAMPLE=FALSE對於我是必要的,因為跟2一樣,link.txt里面還是-lpthread

  

  4.make

  

  

  5.拿到所有編譯出來的.a和需要的.h。

  除了這里的兩個.a和3個.h之外,還需要把引用的庫和頭文件拿出來

  

   當然,實際上我們用不了這么多


  (這里面編譯的openssl不知道為什么我用不了,如果你也爆下面的錯,你也跟我一樣重新編譯一下openssl)

  

  我編譯openssl的指令如下(期間還需要刪一下-m32)

#setarch i686
./Configure no-asm no-shared --prefix=/mnt/f/hisi/workspace/openssl-OpenSSL_1_1_0h/_install --cross-compile-prefix=arm-himix200-linux- linux-generic32
make

 

  最后我們來生成一個sdp試試

 

  編譯后放到設備上運行,輸出如下:

 

 

  有高手希望指點的話可以通過微信與我聯系,我的id是wxid_8r2mjkbcu2an22

 

 

   最后修改時間 2020-10-27 15:44:52

 

  不好意思,忘了調用initKvsWebRtc。如果不調用的話字節序是錯誤的,會影響后續的ICE交互(下一章會講)

 

  最后修改時間 2020-11-05 19:48:00


免責聲明!

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



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