相比之下,另一款APP直播框架RTMP Streamer支援RTMP直播和RTSP直播,不支援SRT協議的直播。而本文講述的SRT Streamer支援RTMP直播和SRT直播,不支援RTSP協議的直播。有關RTMP Streamer的說明參見之前的文章《使用RTMP Streamer開啟APP直播推流》,下面介紹如何使用SRT Streamer開啟手機的APP直播推流。
一、下載SRT Streamer
SRT Streamer採取全Kotlin編碼,需要在Android Studio Jellyfish(小水母版本)上編譯執行,並且依賴最新的JDK17,對執行環境與開發者的技能要求都比較高。博主花了好長時間才找到可用的SRT Streamer原始碼,如果大家需要這套原始碼,可在京東自營購買《FFmpeg開發實戰:從零基礎到短影片上線》一書,聯絡作者獲取SRT Streamer原始碼。
博主找到的SRT Streamer原始碼採用Kotlin編寫,非Java編寫,需使用小水母版本的AS開啟。所以需要先安裝小水母版本的AS,也就是Android Studio Jellyfish,該版本AS的下載地址為 https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2023.3.1.18/android-studio-2023.3.1.18-windows.zip 。
二、載入SRT Streamer
下載的SRT Streamer原始碼是個完整的AS專案,啟動小水母版本的Android Studio,依次選擇選單:File→Open,在彈出的檔案對話方塊中選擇解壓後的SRT Streamer原始碼目錄。Android Studio就開始自動下載相關元件,並執行gradle同步等操作。為了加快SRT Streamer專案的載入速度,可開啟專案級別的build.gradle,在repositories節點內部補充以下配置:
增加以上配置的目的是引入國內的倉庫地址,以便加快相關依賴包的下載速度。
等待SRT Streamer專案成功載入完畢,檢視Android Studio左側的導航圖,可見SRT Streamer專案由下列五個模組組成:
core模組:這是SRT Streamer給音訊流和影片流分別編碼的模組。
demo-camera模組:這是SRT Streamer的攝像頭直播演示模組,也是APP工程的主入口。
demo-screenrecorder模組:這是SRT Streamer的螢幕錄影直播演示模組。
extension-rtmp模組:這是SRT Streamer處理RTMP協議通訊的模組。
extension-srt模組:這是SRT Streamer處理SRT協議通訊的模組。
三、啟動SRT Streamer
Android Studio成功載入SRT Streamer之後,即可在手機上安裝SRT Streamer的演示APP了。有關APP編譯和安裝的詳細步驟參見《Android Studio開發實戰:從零基礎到App上線(第3版)》一書第2章的“2.1.1 App的執行環境”,這裡不再贅述。
SRT Streamer的演示APP在手機上安裝完畢,啟動後的初始介面是下面這樣的。
注意首次使用SRT Streamer需要先配置SRT伺服器資訊,點選介面左上角的三點設定按鈕,開啟伺服器設定頁面如下所示。
這裡要修改以下四個SRT伺服器配置:
1、Endpoint區域的Type欄位:點選後下拉選擇SRT device,表示採用SRT協議推流。
2、SRT Server區域的IP欄位:填流媒體伺服器的IP。
3、SRT Server區域的Port欄位:填流媒體伺服器對SRT協議的開放埠。比如SRS預設的SRT埠號為10080,ZLMediaKit預設的SRT埠號為9000。
4、SRT Server區域的Stream ID欄位:填“#!::r=live/test,m=publish”。
可見SRT Streamer提供了豐富多樣的直播形式,既可以透過手機攝像頭直播,還能對手機的螢幕操作進行直播。具體的直播協議又包括RTMP和SRT兩種,可以滿足絕大多數場景的直播需求,而且SRT Streamer是個開源軟體,提供了完整的APP直播錄製全套程式碼,非常適合開發者學習和研究。
更多詳細的FFmpeg開發知識參見