聲網 PK 連麥方案場景主要是針對 CDN 推流拉流場景設計。git
聲網 PK 連麥場景針對 CDN 推流場景設計,主要涉及單主播模式和雙主播 PK 模式兩種模式的切換,此外還有可選的觀衆模式。github
單主播模式中,主播能夠採用Agora SDK 或者第三方推流工具(好比 ijkplayer)推流到 CDN。觀衆經過 CDN 播放器拉取主播視頻流觀看直播。web
雙主播 PK 模式中,兩個主播退出 CDN 推流並同時加入同一個聲網頻道,各自在聲網服務端設置雙主播的合圖(setLiveTranscoding),並經過聲網提供的推流接口(addPublishStreamUrl)將合圖後的流推送到原先的 CDN 地址。各自的 CDN 觀衆看到兩個主播開始 PK。bash
因爲兩個 PK 主播各自的 CDN 推流地址未發生改變,CDN 觀衆端不須要切換 CDN 拉流地址。只要任意一個主播離開聲網 PK 頻道,另外一主播也退出 PK 模式返回普通模式。架構
對於可選的觀衆模式,觀衆通常使用第三方 CDN 播放器(好比 ijkplayer)拉取視頻流觀看直播,本示例程序中並不包含觀衆模式。工具
官方文檔中給出了聲網 PK 連麥方案的架構圖:post
官方提供了 Android 平臺的實現代碼,你能夠在 GitHub 上下載並進行測試,也能夠基於該代碼進行擴展。學習
固然,官方也提供了已經實現的 apk 文件。測試
首先,咱們能夠經過官方給出的代碼連接下載 Demo:github.com/AgoraIO/ARD…gradle
下載後進行解壓,注意關注一下 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)
對於直播拉流,給你們幾個測試地址:
單主播模式與 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 入門初體驗。下面我列一些學習資料,但願對你們有幫助。