EasyPusher是一款國產的RTSP直播錄製推流客戶端工具,它支持Windows、Linux、Android、iOS等操作系統。EasyPusher採用RTSP推流協議,其中安卓版EasyPusher的Github托管地址為https://github.com/EasyDarwin/EasyP ...
EasyPusher是一款國產的RTSP直播錄製推流客戶端工具,它支持Windows、Linux、Android、iOS等操作系統。EasyPusher採用RTSP推流協議,其中安卓版EasyPusher的Github托管地址為https://github.com/EasyDarwin/EasyPusher-Android。
不過EasyPusher有好幾年沒更新了,尤其安卓版的EasyPusher仍在調用過時的support支持庫,而非推出多年的AndroidX庫。為了讓EasyPusher-Android源碼能夠在最新的Android Studio上跑起來,需要對下載後的EasyPusher-Android源碼進行若幹改造。以下的改造內容基於Android Studio Dolphin(小海豚版本),詳細的改造步驟說明如下。
1、升級編譯的SDK版本
使用Android Studio Dolphin打開下載後的EasyPusher-Android項目,把模塊build.gradle裡面的compileSdkVersion和targetSdkVersion都從26改為28,因為小海豚版本的Android Studio最低支持到API28。
2、遷移到Androidx
上個步驟修改了模塊build.gradle,單擊“Sync Now”同步配置變動。等待同步完成,依次選擇頂部菜單:Refactor→Migrate to AndroidX,表示把App工程遷移到AndroidX支持庫,接著Android Studio就自動把App工程里的support庫配置與相關類統統換成AndroidX的相應對象。
3、指定本地NDK的版本號
然後依次選擇頂部菜單:Build→Make Project,發現App編譯報錯“No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi”,這是因為Android Studio沒找到合適的NDK版本。解決辦法是在配置文件中指定本地NDK的版本號(註意事先在SDK Manager中勾選對應版本的ndk,具體參見《FFmpeg開發實戰:從零基礎到短視頻上線》一書第12章的“12.1.1 搭建Android的NDK開發環境”),打開模塊build.gradle,把下麵這行
buildToolsVersion '28.0.3'
改為下麵這行
//buildToolsVersion '28.0.3'
ndkVersion '21.4.7075529' // 這裡的ndkVersion改為自己電腦上的ndk版本號
接著單擊“Sync Now”同步配置變動。
4、升級App工程的Gradle版本號
然後依次選擇頂部菜單:Build→Make Project,發現App編譯報錯“java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException”,這是因為EasyPusher-Android預設的Gradle版本太低。解決辦法是升級EasyPusher-Android項目的Gradle版本號,先把gradle/wrapper/gradle-wrapper.properties里的distributionUrl值改為下麵這個:
https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
再把項目級別build.gradle裡面的節點路徑buildscript→dependencies→classpath值改為下麵這個:
'com.android.tools.build:gradle:4.2.1'
接著單擊“Sync Now”同步配置變動。
5、編譯並運行EasyPusher-Android
然後依次選擇頂部菜單:Build→Make Project,等待編譯通過後依次選擇頂部菜單:Run→Run 'app',在調試的真機上即可看到EasyPusher-Android的App界面如下圖所示。
點擊App界面右下角的設置按鈕,打開設置頁面如下圖所示,註意修改上方編輯框中的服務端推流地址,比如rtsp://124.70.***.***/live/test。
註意,由於EasyPusher僅支持RTSP推流,不支持RTMP等其他推流協議,因此上面只能填寫RTSP推流鏈接。至於服務端的流媒體伺服器,可採用ZLMediaKit,有關ZLMediaKit的使用說明詳見之前的文章《Linux環境安裝ZLMediaKit實現視頻推流》。
更多詳細的FFmpeg開發知識參見