聲網 PK 連麥方案場景主要是針對 CDN 推流拉流場景設計。
使用場景
聲網 PK 連麥場景針對 CDN 推流場景設計,主要涉及單主播模式和雙主播 PK 模式兩種模式的切換,此外還有可選的觀眾模式。
單主播模式中,主播可以採用Agora SDK 或者第三方推流工具(比如 ijkplayer)推流到 CDN。觀眾通過 CDN 播放器拉取主播視訊流觀看直播。
雙主播 PK 模式中,兩個主播退出 CDN 推流並同時加入同一個聲網頻道,各自在聲網服務端設定雙主播的合圖(setLiveTranscoding),並通過聲網提供的推流介面(addPublishStreamUrl)將合圖後的流推送到原先的 CDN 地址。各自的 CDN 觀眾看到兩個主播開始 PK。
由於兩個 PK 主播各自的 CDN 推流地址未發生改變,CDN 觀眾端不需要切換 CDN 拉流地址。只要任意一個主播離開聲網 PK 頻道,另一主播也退出 PK 模式返回普通模式。
對於可選的觀眾模式,觀眾一般使用第三方 CDN 播放器(比如 ijkplayer)拉取視訊流觀看直播,本示例程式中並不包含觀眾模式。
官方文件中給出了聲網 PK 連麥方案的架構圖:
實現程式碼和 apk 體驗
官方提供了 Android 平臺的實現程式碼,你可以在 GitHub 上下載並進行測試,也可以基於該程式碼進行擴充套件。
當然,官方也提供了已經實現的 apk 檔案。
執行 Demo
首先,我們可以通過官方給出的程式碼連結下載 Demo:github.com/AgoraIO/ARD…
下載後進行解壓,注意關注一下 gradle 和 gradle tools 的版本號。注意一下程式碼配置,這個位置要細緻檢查,防止出錯。
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
// jniLibs.srcDirs = ['../../../libs']
}
}
複製程式碼
當然,我們想要執行示例程式,需要先去聲網註冊賬號,建立自己的測試專案,獲取到 AppID。
你也可以在 視訊通話/視訊直播 SDK 頁面進行 SDK 的下載:
之後主要有以下三個步驟:
-
將 AppID 填寫進 PKConstants 的 MEDIA_APP_ID以及SIGNALING_APP_ID 中
-
解壓視訊通話/視訊直播 SDK 包,將其中的 jar 和 so 複製到專案對應資料夾下。
-
最後使用 AndroidStudio 開啟專案,連線 Android 測試裝置,編譯並執行。
示例程式主要包括以下一些功能
-
開始直播:在首頁輸入直播頻道名,點選“開始直播”按鈕,進入直播房間,開始直播和 CDN 推流;
-
發起PK:在房間內點選“PK”按鈕,並輸入“PK房間名”進入PK(需要兩個主播同時輸入相同的“PK房間名”以進入同一房間);
-
退出PK:點選“退出PK”按鈕,退出PK模式,返回單主播模式;
-
退出房間:點選右上角“離開”按鈕,離開直播房間;
-
拷貝拉流地址:在直播中可點選“拷貝”按鈕,拷貝拉流地址,使用 CDN 播放器(如 VLC)
對於直播拉流,給大家幾個測試地址:
- 香港財經:rtmp://202.69.69.180:443/webcast/bshdlive-pc
- 韓國朝鮮日報:rtmp://live.chosun.gscdn.com/live/tvchosun1.stream
- 湖南衛視:rtmp://58.200.131.2:1935/livetv/hunantv
整合注意事項
-
單主播模式與 PK 模式切換時一定要先停止原先的推流,再重新開始推流,否則會推流失敗
-
觀眾一般需要感知主播模式的改變來更新UI,一般是通過信令通知觀眾,由於信令和 CDN 視訊流存在時間差(CDN 推流一般存在數秒的延遲),為了更好的使用者體驗,可以在切換模式時做一個延時動畫,讓使用者忽略這個時間差。也可以通過 CDN 播放器的特有回撥(如視訊尺寸改變)來感知主播狀態的變化。
整合時,我就使用了簡單 Channel Name 的方式登入,怎麼都不行。後來網上查詢解決方案,發現加入頻道正式應用中一般採用 Token 模式。
private void joinChannel() {
// 這個null需傳入Token
mRtcEngine.joinChannel(null, "demoChannel1", "Extra Optional Data", 0); // if you do not specify the uid, Agora will assign one.
}
複製程式碼
此處是看了這篇文章找到的問題:blog.csdn.net/zmm911zmm/a…
以上就是我的聲網 PK 連麥功能 Android 入門初體驗。下面我列一些學習資料,希望對大家有幫助。
參考學習資料
- Demo 地址:github.com/AgoraIO/ARD…
- apk 檔案:github.com/AgoraIO-Use…
- 官方文件:github.com/AgoraIO-Use…