一、RootEncoder簡介
RootEncoder是一個視頻流推送器,它的前身叫做rtmp-rtsp-stream-client-java,用於通過RTMP、RTSP和SRT等協議將音視頻推送到流媒體服務器,該庫的所有代碼均使用Java和Kotlin編寫。注意:在添加了SRT協議後,開源庫的名稱已從rtmp-rtsp-stream-client-java重命名為RootEncoder,以便和原來的開源庫區分開。
RootEncoder的源碼託管地址為https://github.com/pedroSG94/RootEncoder(星星數2.8k),國內的鏡像地址為https://gitee.com/mirrors_pedroSG94/rtmp-rtsp-stream-client-java,最新版本是2025年10月發佈的RootEncoder 2.6.5,可見該框架的源碼更新十分及時,該版本的源碼下載鏈接為https://github.com/pedroSG94/RootEncoder/archive/refs/tags/2.6.5.tar.gz。
RootEncoder主要支持RTSP和RTMP兩種協議,還支持試用SRT和UDP兩種協議。對於視頻流,RootEncoder支持AV1、H264、H265等編碼標準;對於音頻流,RootEncoder支持G711、AAC、OPUS等編碼標準。Android版本的RootEncoder支持camera1和camera2的兩種API調用,且同時支持軟件編碼和硬件編碼,可謂功能強大。
RootEncoder提供了兩種APP集成方式:引用在線庫、直接導入源碼,分別説明如下:
二、引用RootEncoder在線庫
Android工程引用RootEncoder在線庫時,需要修改以下三個配置:
1、打開項目級別的build.gradle,或者settings.gradle,給repositories節點補充下面一行配置(注意有兩個repositories,兩個地方都要加),表示指定Maven倉庫:
2、打開模塊級別的build.gradle,給dependencies節點補充下面幾行配置,表示引入2.6.5版本的RootEncoder庫:
3、打開App模塊的src/main/AndroidManifest.xml,給manifest節點補充下面三行權限配置,表示聲明網絡、錄音、相機等三個權限:
三、直接導入RootEncoder源碼
由於RootEncoder基於Kotlin編碼,引入了最新的Android開發技術,因此需要使用較新的Android Studio才能成功導入運行。接下來以Android Studio Ladybug(小瓢蟲版本)為例,介紹如何通過Android Studio編譯運行RootEncoder的demo工程。
1、調整Gradle版本
打開RootEncoder/gradle/wrapper/gradle-wrapper.properties,把下面這行
改成下面這行,也就是把Gradle8.14.3降級到8.14。
2、修改AGP插件版本
使用Android Studio導入RootEncoder工程之後,Gradle會報錯“The project is using an incompatible version (AGP 8.13.0) of the Android Gradle plugin. Latest supported version is AGP 8.7.2”。這是因為RootEncoder工程用到的Gradle插件版本8.13.0太高了,需要降級降到8.7.2。於是打開RootEncoder/gradle/libs.versions.toml,把下面這行
改為下面這行,也就是把agp版本號從8.13.0降到8.7.2。
3、調整默認的JDK版本
在Android Studio主界面依次選擇菜單:File→Settings→Build,Execution,Deployment→Build Tools→Gradle,把Gradle JDK欄的版本調整為JDK17。
因為Android Studio Ladybug自帶的JDK版本為21,在編譯時會報錯:“Java compiler version 21 has deprecated support for compiling with source/target version 8.”。
四、運行RootEncoder的DEMO工程
完成以上幾處配置調整後,重新編譯App安裝到真機上,啓動後的初始界面如下圖所示:
點擊左上角的【Old API】按鈕,打開推流界面如下圖所示:
可見在推流之前,得先輸入流媒體服務器的推流地址。為此按照《FFmpeg開發實戰:從零基礎到短視頻上線》一書的“10.2.2 FFmpeg向網絡推流”説明,在電腦上啓動MediaMTX,並通過命令“ipconfig /all”找到電腦位於WiFi的局域網IP。
確保手機和電腦連接了同一個WiFi,再往RootEncoder的推流界面上方填寫MediaMTX的完整推流地址如“rtmp://192.168.*.*:1935/stream”,接着點擊界面下方中央的直播按鈕,開始推流動作的界面如下圖所示。
再次點擊直播按鈕可停止推流,點擊左下角的錄製按鈕可錄製視頻,點擊右下角的切換按鈕可切換前後攝像頭。那麼點擊直播按鈕開始推流,RootEncoder就把攝像頭採集到的視頻數據向MediaMTX推流。
然後電腦打開VLC media player,依次選擇菜單:媒體→打開網絡串流,在彈窗的URL欄輸入對應的MediaMTX拉流地址“rtmp://192.168.*.*:1935/stream”如下圖所示。
確認輸入無誤後,單擊右下角的播放按鈕,此時VLC media player就自動播放來自拉流地址的視頻畫面如下圖所示。
對比RootEncoder的推流預覽界面和VLC media player的拉流播放界面,可知手機攝像頭採集到的視頻信號正確傳送給了電腦。
更多詳細的FFmpeg開發知識參見




