1 語聊房應用場景說明 七夕禮物準備好了嗎?程式猿七夕禮物標配,給女友搭建專屬語聊房,既浪漫又硬核! 語聊房在社交場景中使用比較廣泛,社交APP中的語聊房場景的實現,主要由業務系統和移動/Web 客戶端組成。其中業務系統需要實現語聊房的房間管理、麥位管理、音頻流和麥位關聯關係管理等功能,客戶端需要實 ...
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)