前言
上篇文章對 【流媒體服務器Mediasoup】 源碼中使用到的 protoo.websocket 基本API講解與使用(六),本章節主要對MediaSoup的Android客戶端與之前搭建的服務端以及Web端通信,並且實現音視頻互通。
在下一篇文章中將對Mediasoup服務端 Socket.io 替換 Protoo WebSocket 的講解。
Android中使用Mediasoup+Mediasoup庫
在Android項目中使用libmediasoup 主要有兩種方式:
1: Android studio app下的 build.gradle 直接依賴 implementation 'org.mediasoup.droid:mediasoup-client:3.0.4-beta-1'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'org.mediasoup.droid:mediasoup-client:3.0.4-beta-1'
implementation 'org.java-websocket:Java-WebSocket:1.4.0'
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha01'
}
之後就可以通過這個庫進行Api邏輯開發,具體邏輯在後續博文中也會進行一一介紹,只要WebSocket或者信令打通了,則就可以完完全全能夠連到之前博文中部署的服務端進行連接,並且能夠與Web端進行音視頻通信。
這個方法相對來說適合上層做業務邏輯不用去動底層代碼,但是有時候可能需要改動到底層庫則會顯得比較無力。
要到達商業化軟件則還是得來動手編譯libMediasoupClient庫
2: 自己動手編譯庫。
由於libmediasoup-client 中需要依賴一些Webrtc的庫,在Linux 下進行編譯,下載WebRtc源碼可能網絡會稍微收到一點限制。
具體如何編譯這裏不做太多詳細介紹 可以百度搜索: mediasoupclient webrtc 一些文章會有詳細教程。
【官網編譯教程:https://mediasoup.org/documentation/v3/libmediasoupclient/installation/】
編譯時還是會有很多環境問題需要耐心的去解決如 GCC、G++ 需要的版本 支持C++11及以上特性。
首先編譯出libwebrtc.a 最後在編譯出libmediasouoClient.a
到目前爲止只是編譯出了靜態庫,那麼如何在Android上使用靜態庫進行NDK開發呢?
目前爲止網上已經有大神已經把一些基礎文件做好了,並寫好cmake腳本,具體項目後續上傳到文件資源。
(編譯出libmediasoupclient.a 也可以自己去寫cmake 腳本進行編譯出so)
deps 裏面是整個源碼以及要編譯需要依賴的頭文件
jni java層調用的業務代碼
CMakeList.txt 已經完全寫好編譯的腳本
Android Studio中對 Mediasoup client SO庫的編譯
以上介紹了2種 使用自己編的依賴庫去NDK開發。
那麼也可以完全使用Android Studio進行對libwebrtc.a以及 libmediasoupclient.a 的直接編譯。
首先可以把Webrtc 以及 MediasoupLib 需要的源碼下下來,附上下載地址(裏面已經寫好了cmake編譯靜態庫的腳本)
整個代碼結構如第一節所看到的 放到deps 文件夾目錄下。
這邊直接給出下載地址,直接下載完導入Module 即可。
下載地址:
介紹幾個重要的類
未完待續。。。。。。。