1 語聊房應用場景說明
七夕禮物準備好了嗎?程式猿七夕禮物標配,給女友搭建專屬語聊房,既浪漫又硬核!
語聊房在社交場景中使用比較廣泛,社交APP中的語聊房場景的實作,主要由業務系統和移動/Web 客戶端組成,其中業務系統需要實作語聊房的房間管理、麥位管理、音頻流和麥位關聯關系管理等功能,客戶端需要實作語聊房的登錄/登出房間、拉流/停止拉流、上麥推流/停止推流下麥等功能,還可以根據需要使用語聊房房間資訊通道實作 IM 功能,
1.1 語聊房業務系統功能
語聊房房間管理
主要負責房間串列的維護,
- 創建房間:用戶登錄業務系統后,可以創建房間,創建房間后房間串列要做新增操作,
- 銷毀房間:所有用戶退出房間后,需要銷毀房間,銷毀房間后房間串列要做洗掉操作,
語聊房麥位管理
主要負責根據業務場景定義房間的麥位數量,以及當前房間所有麥位的狀態管理,
- 用戶進入房間后,只有空閑狀態的麥位可以上麥,
- 用戶上麥后,需要修改麥位狀態為非空閑狀態,
- 用戶停止推流下麥后,要重置麥位狀態,
語聊房音頻流管理
主要負責管理房間內音頻流和麥位的關聯關系,
- 只有當前房間內非空閑狀態麥位的流可以拉,
1.2 語聊房客戶端功能
語聊房登錄/登出房間
- 用戶進入客戶端后,選擇房間串列中的房間或者自行創建房間,然后登錄房間,
- 用戶退出當前語聊房時,需要登出房間,
語聊房拉流/停止拉流
- 用戶登錄房間后或收到流新增訊息時,需要根據流 Id 判斷是否是本房間非空閑狀態麥位推的流,如果是則發起拉流,
- 用戶收到流洗掉訊息或者登出房間之前,要停止拉流,
語聊房SDK上麥推流/停止推流下麥
- 用戶登錄房間后,如果有非空閑狀態的麥位,可以選擇上麥,
- 用戶上麥成功發起推流,成為麥上用戶,
- 用戶停止推流后下麥,成為觀眾,
語聊房房間信令互動
- 用戶可以通過房間信令通道,發送文字訊息參與互動,
2 使用ZEGO SDK語聊房實作流程
下圖為語聊房實作時序圖,開發者可以參考時序圖來實作該業務,

2.1 用戶 A 創建房間
呼叫業務系統創建房間介面創建房間,創建房間成功后業務系統需要回傳的當前創建房間的 ID,
2.2 用戶 A 登錄業務房間
呼叫業務系統登錄房間介面登錄房間,登錄成功后業務系統需要更新房間串列,并回傳房間麥位資訊串列,麥位資訊需要包含麥位 Id、是否空閑狀態等,
2.3 用戶 B 查詢房間串列
呼叫業務系統獲取房間串列資訊介面獲取房間串列,呼叫成功后業務系統需要回傳當前房間資訊串列,房間資訊需要包含房間 ID 等,
2.4 用戶 B 登錄業務房間
用業務系統登錄房間介面登錄房間,登錄成功后業務系統需要更新房間串列,并回傳房間麥位資訊串列,麥位資訊需要包含麥位 Id、是否空閑狀態等,
2.5 用戶 A 登錄 SDK 房間
依次呼叫 Express Audio SDK 的初始化 SDK 介面、設定事件回呼介面、登錄房間介面,登錄 SDK 房間,登錄成功后,會收到房間流更新回呼,
2.6 用戶 A 上麥推流
選擇空閑狀態的麥位呼叫業務系統上麥介面上麥,業務系統更新麥位狀態為非空閑狀態,并回傳上麥結果資訊,上麥結果資訊需要包含使用的麥位 Id、為麥位分配的推流 Id 等資訊,收到請求上麥結果回傳資料后,根據回傳的推流 ID 呼叫 Express Audio SDK 推流介面開始推流,推流后會收到推流結果回呼,
2.7 用戶 B 登錄 SDK 房間
依次呼叫 Express Audio SDK 的初始化 SDK 介面、設定事件回呼介面、登錄房間介面,登錄 SDK 房間,登錄成功后,會收到房間流更新回呼,
2.8 用戶 B 收到 Express Audio SDK 流更新回呼拉流
登錄 SDK 房間成功后,會收到房間流更新回呼,如果是流新增,呼叫業務系統查詢介面查詢流 ID 是否為當前房間麥位分配的推流 ID,如果是則呼叫 Express Audio SDK 拉流介面拉流,
2.9 用戶 B 上麥推流
選擇空閑狀態的麥位呼叫業務系統上麥介面上麥,業務系統更新麥位狀態為非空閑狀態,并回傳上麥結果資訊,上麥結果資訊需要包含使用的麥位 Id、為麥位分配的推流 Id 等資訊,收到請求上麥結果回傳資料后,根據回傳的推流 ID 呼叫 Express Audio SDK 推流介面開始推流,推流后會收到推流結果回呼,
2.10 用戶 A 收到 Express Audio SDK 流更新回呼拉流
登錄 SDK 房間成功后,會收到房間流更新回呼,如果是流新增,呼叫業務系統查詢介面查詢流 ID 是否為當前房間麥位分配的推流 ID,如果是則呼叫 Express Audio SDK 拉流介面拉流,
2.11 用戶 A 請求下麥后停止推流
呼叫業務系統下麥介面下麥,業務系統更新麥位為空閑狀態,用戶下麥成功后成為線下觀眾,停止推流,
2.12 停止拉流、登出房間
呼叫 Express Audio SDK 停止拉流介面停止拉所有正在拉的流、呼叫登出房間介面登出 SDK 房間,
2.13 登出業務房間
呼叫業務系統登出房間介面登出業務房間,
3 語聊房SDK操作步驟
3.1 創建/銷毀 Engine
在使用 Express Audio SDK 之前,需要初始化 Express Audio SDK,由于初始化操作 SDK 內部處理的流程較多,建議開發者在 App 啟動時進行,詳情請參考 快速開始 - 實作流程 的 “2.1 創建引擎”,
/** 定義 SDK 引擎物件 */
ZegoExpressEngine engine;
ZegoEngineProfile profile = new ZegoEngineProfile();
/** 請通過官網注冊獲取,格式為 123456789L */
profile.appID = appID;
/** 64個字符,請通過官網注冊獲取,格式為"0123456789012345678901234567890123456789012345678901234567890123" */
profile.appSign = appSign;
/** 通用場景接入 */
profile.scenario = ZegoScenario.GENERAL;
/** 設定app的application 物件 */
profile.application = getApplication();
/** 創建引擎 */
engine = ZegoExpressEngine.createEngine(profile, null);
/** 銷毀 SDK */
ZegoExpressEngine.destroyEngine(null);
3.2 設定事件回呼
可以根據場景需要,在初始化 SDK 后監聽想要關注的事件通知,比如用戶加入房間,房間流更新等等,
// 設定事件回呼,監聽房間流更新
engine.setEventHandler(new IZegoEventHandler() {
@Override
public void onRoomStreamUpdate(String roomID, ZegoUpdateType updateType, ArrayList<ZegoStream> streamList) {
super.onRoomStreamUpdate(roomID, updateType, streamList);
if (ZegoUpdateType.ADD == updateType) {
// 流新增
} else if (ZegoUpdateType.DELETE == updateType) {
// 流洗掉
}
}
});
3.3 登錄/登出語聊房房間
用戶上麥推流之前,需要先登錄房間,在收到登錄房間成功的回呼后可以直接呼叫 loginRoom 介面進行推拉流操作,詳情請參考 快速開始 - 實作流程 的 “2.2 登錄房間”,
/** 創建用戶 */
ZegoUser user = new ZegoUser("Anchor1");
/** 開始登陸房間 */
engine.loginRoom("LiveRoom", user);
/** 登出房間 */
engine.logoutRoom("room1");
3.4 語聊房開始/停止推流
呼叫 startPublishingStream 介面,可以向遠端用戶發送本端的音視頻流,如果不需要繼續推流,請呼叫 stopPublishingStream 停止推流,詳情請參考 快速開始 - 實作流程 的 “2.3 推流”,
/** 開始推流 */
engine.startPublishingStream("stream1");
/** 停止推流 */
engine.stopPublishingStream();
3.5 語聊房拉流/停止拉流
呼叫 startPlayingStream 進行拉流,如果不需要繼續拉流,請呼叫 stopPlayingStream 停止拉流,詳情請參考 快速開始 - 實作流程 的 “2.4 拉流”,
/**
* 開始拉流
*/
engine.startPlayingStream("stream1");
/** 停止拉流 */
engine.stopPlayingStream(streamID);
獲取語聊房SDK更多幫助
你學會了嗎?
獲取本文語聊房的Demo、開發檔案、技術支持,訪問即構檔案中心
近期有開發規劃的開發者可上即構官網查看,恰逢即構七周年全線音視頻產品1折的優惠,聯系商務獲取RTC產品優惠;
音視頻場景解決方案分享,更多詳情可搜索官網(https://zegoguanwang.datasink.sensorsdata.cn/t/pB)轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/500943.html
標籤:Android
