FFmpeg開發筆記(三十一)使用RTMP Streamer開啟APP直播推流

aqi00發表於2024-06-22
RTMP Streamer是一個安卓手機端的開源RTMP直播推流框架,可用於RTMP直播和RTSP直播,其升級版還支援SRT直播(騰訊影片雲就採用SRT協議)。RTMP Streamer支援的影片編碼包括H264、H265、AV1等等,支援的音訊編碼包括AAC、G711、OPUS等等,可謂功能強大的APP直播框架。

由於升級版的RTMP Streamer採取全Kotlin編碼,對執行環境與開發者的技能要求都比較高,因此為了方便講解,這裡以標準版的RTMP Streamer為例,介紹如何使用RTMP Streamer開啟手機的APP直播推流。

一、下載RTMP Streamer

由於最新版的RTMP Streamer被升級得面目全非,難以為國內開發者使用,並且RTMP Streamer升級之後,原本在Github上託管的舊程式碼也不翼而飛,不知是不是老外對我們封鎖高科技。因此博主尋尋覓覓,花了好長時間才找到合適版本的RTMP Streamer原始碼,如果大家需要這套原始碼,可在京東自營購買《FFmpeg開發實戰:從零基礎到短影片上線》一書,聯絡作者獲取RTMP Streamer原始碼。
博主找到的RTMP Streamer原始碼採用Java編寫,非Kotlin編寫,可使用小海豚版本的AS開啟。所以需要先安裝小海豚版本的AS,也就是Android Studio Dolphin,該版本AS的下載地址為 https://redirector.gvt1.com/edgedl/android/studio/install/2021.3.1.16/android-studio-2021.3.1.16-windows.exe 。

二、載入RTMP Streamer

下載的RTMP Streamer原始碼是個完整的AS專案,啟動小海豚版本的Android Studio,依次選擇選單:File→Open,在彈出的檔案對話方塊中選擇解壓後的RTMP Streamer原始碼目錄。Android Studio就開始自動下載相關元件,並執行gradle同步等操作。為了加快RTMP Streamer專案的載入速度,可開啟專案級別的build.gradle,在repositories節點內部補充以下配置:

// 以下四行新增阿里雲的倉庫地址,方便國內開發者下載相關外掛
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven { url 'https://maven.aliyun.com/repository/public'}
// 以下新增華為的倉庫地址
maven { url 'https://developer.huawei.com/repo/'}

增加以上配置的目的是引入國內的倉庫地址,以便加快相關依賴包的下載速度。
等待RTMP Streamer專案成功載入完畢,檢視Android Studio左側的導航圖,可見RTMP Streamer專案由下列五個模組組成:
app模組:這是RTMP Streamer的演示介面模組,也是APP工程的主入口。
encoder模組:這是RTMP Streamer給音訊流和影片流分別編碼的模組。
rtmp模組:這是RTMP Streamer處理RTMP協議通訊的模組。
rtplibrary模組:這是處理RTP協議資料傳輸的公共庫,rtmp模組和rtsp模組都調到了該庫。
rtsp模組:這是RTMP Streamer處理RTSP協議通訊的模組。

三、啟動RTMP Streamer

Android Studio成功載入RTMP Streamer之後,即可在手機上安裝RTMP Streamer的演示APP了。有關APP編譯和安裝的詳細步驟參見《Android Studio開發實戰:從零基礎到App上線(第3版)》一書第2章的“2.1.1 App的執行環境”,這裡不再贅述。
RTMP Streamer的演示APP在手機上安裝完畢,啟動後的初始介面是下面這樣的。

可見RTMP Streamer提供了豐富多樣的直播形式,既可以透過手機攝像頭直播,還能把手機上的影片檔案分享直播,還能對手機的螢幕操作進行直播。具體的直播協議又包括RTMP和RTSP兩種,可以滿足絕大多數場景的直播需求,而且RTMP Streamer是個開源軟體,提供了完整的APP直播錄製全套程式碼,非常適合開發者學習和研究。

更多詳細的FFmpeg開發知識參見《FFmpeg開發實戰:從零基礎到短影片上線》一書。

相關文章