製品概要
製品の利点
応用シナリオ


onRemoteUserEnterRoom(B)とonUserVideoAvailable(B,true)という2つのイベントコールバックを受信します。即ち、ルーム「101」のユーザーは全員、配信者Bのオーディオ・ビデオをサブスクライブできます。onRemoteUserEnterRoom(A)とonUserVideoAvailable(A,true)という2つのイベントコールバックを受信します。即ち、ルーム「102」のユーザーは全員、配信者Aのオーディオ・ビデオをサブスクライブできます。ConnectOtherRoomを呼び出してクロスルーム通話を確立するだけで十分です。双方向での呼び出しは行わないでください。ConnectOtherRoomを複数回呼び出すことで、複数のルームの配信者とクロスルーム通話を確立できます。現在、単一配信者は他のルームの最大9人の配信者とクロスルーム通話を行うことができます。
public void connectOtherRoom(String roomId, String userId) {try {JSONObject jsonObj = new JSONObject();// 文字列ルーム番号を例に、数字ルーム番号 key:roomIdjsonObj.put("strRoomId", roomId);jsonObj.put("userId", userId);mTRTCCloud.ConnectOtherRoom(jsonObj.toString());} catch (JSONException e) {e.printStackTrace();}}// クロスルーム通話リクエストの結果コールバック@Overridepublic void onConnectOtherRoom(String userId, int errCode, String errMsg) {// userId: クロスルーム通話するもう一方のルームの配信者のユーザーID// errCode: エラーコード、ERR_NULLはリクエスト成功を表します// errMsg: エラーメッセージ}
- (void)connectOtherRoom:(NSString *)roomId {NSMutableDictionary *jsonDict = [[NSMutableDictionary alloc] init];// 文字列ルーム番号を例に、数字ルーム番号 key:roomId[jsonDict setObject:roomId forKey:@"strRoomId"];[jsonDict setObject:self.userId forKey:@"userId"];NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil];NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];[self.trtcCloud connectOtherRoom:jsonString];}// クロスルーム通話リクエストの結果コールバック- (void)onConnectOtherRoom:(NSString *)userId errCode:(TXLiteAVError)errCode errMsg:(NSString *)errMsg {// userId: クロスルーム通話するもう一方のルームの配信者のユーザーID// errCode: エラーコード、ERR_NULLはリクエスト成功を表します// errMsg: エラーメッセージ}
ConnectOtherRoomを呼び出してクロスルーム通話を確立するだけで十分です。双方向での呼び出しは行わないでください。@Overridepublic void onUserAudioAvailable(String userId, boolean available) {// あるリモートユーザーが自身のオーディオを公開/キャンセルしました// 自動サブスクリプションモードでは、何も操作する必要はなく、SDKが自動的にリモートユーザーのオーディオを再生します}@Overridepublic void onUserVideoAvailable(String userId, boolean available) {// あるリモートユーザーがメインストリームのビデオ画面を公開/キャンセルしましたif (available) {// リモートユーザーのビデオストリームをサブスクライブし、ビデオレンダリングコントロールをバインドしますmTRTCCloud.startRemoteView(userId, TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG, view);} else {// リモートユーザーのビデオストリームのサブスクリプションを停止し、レンダリングコントロールを解放しますmTRTCCloud.stopRemoteView(userId, TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG);}}
- (void)onUserAudioAvailable:(NSString *)userId available:(BOOL)available {// あるリモートユーザーが自身のオーディオを公開/キャンセルしました// 自動サブスクリプションモードでは、何も操作する必要はなく、SDKが自動的にリモートユーザーのオーディオを再生します}- (void)onUserVideoAvailable:(NSString *)userId available:(BOOL)available {// あるリモートユーザーがメインストリームのビデオ画面を公開/キャンセルしましたif (available) {// リモートユーザーのビデオストリームをサブスクライブし、ビデオレンダリングコントロールをバインドします[self.trtcCloud startRemoteView:userId streamType:TRTCVideoStreamTypeBig view:self.remoteView];} else {// リモートユーザーのビデオストリームのサブスクリプションを停止し、レンダリングコントロールを解放します[self.trtcCloud stopRemoteView:userId streamType:TRTCVideoStreamTypeBig];}}
// クロスルーム通話を終了mTRTCCloud.DisconnectOtherRoom();// クロスルーム通話終了結果のコールバック@Overridepublic void onDisConnectOtherRoom(int errCode, String errMsg) {super.onDisConnectOtherRoom(errCode, errMsg);}
// クロスルーム通話を終了[self.trtcCloud disconnectOtherRoom];// クロスルーム通話終了結果のコールバック- (void)onDisconnectOtherRoom:(TXLiteAVError)errCode errMsg:(NSString *)errMsg {}

{"SdkAppId": 1400000000,"RoomId": "A","RoomIdType": 1,"AgentParams": {"UserId": "A_Agent","UserSig": "eJwtjMEKgkAUAP9lz2Hv6b40oU...","MaxIdleTime": 50},"WithTranscoding": 1,"AudioParams": {"AudioEncode": {"Codec": 0,"SampleRate": 48000,"Channel": 2,"BitRate": 64}},"FeedBackRoomParams": [{"RoomId": "B","RoomIdType": 1,"UserId": "A_Feed","UserSig": "eJwtzEELgkAUBOD-sldD3745..."},{"RoomId": "N","RoomIdType": 1,"UserId": "A_Feed","UserSig": "eJwtzEELgkAUBOD-sldD3745..."}]}
{"SdkAppId": 1400000000,"RoomId": "B","RoomIdType": 1,"AgentParams": {"UserId": "B_Agent","UserSig": "eJwtjMEKgkAUAP9lz2Hv6b40oU...","MaxIdleTime": 50},"WithTranscoding": 1,"AudioParams": {"AudioEncode": {"Codec": 0,"SampleRate": 48000,"Channel": 2,"BitRate": 64}},"FeedBackRoomParams": [{"RoomId": "A","RoomIdType": 1,"UserId": "B_Feed","UserSig": "eJwtzEELgkAUBOD-sldD3745..."},{"RoomId": "N","RoomIdType": 1,"UserId": "B_Feed","UserSig": "eJwtzEELgkAUBOD-sldD3745..."}]}
{"SdkAppId": 1400000000,"RoomId": "N","RoomIdType": 1,"AgentParams": {"UserId": "N_Agent","UserSig": "eJwtjMEKgkAUAP9lz2Hv6b40oU...","MaxIdleTime": 50},"WithTranscoding": 1,"AudioParams": {"AudioEncode": {"Codec": 0,"SampleRate": 48000,"Channel": 2,"BitRate": 64}},"FeedBackRoomParams": [{"RoomId": "A","RoomIdType": 1,"UserId": "N_Feed","UserSig": "eJwtzEELgkAUBOD-sldD3745..."},{"RoomId": "B","RoomIdType": 1,"UserId": "N_Feed","UserSig": "eJwtzEELgkAUBOD-sldD3745..."}]}
ソリューションタイプ | ソリューション利点 | ソリューション欠点 | ルーム及び人数制限 | おすすめの使用シーン |
2人PKの呼び出しロジックは簡単です | 複数人PKの呼び出しロジックは複雑です | 単一配信者は他のルームの最大9人の配信者とクロスルームPK可能 | 2つのルーム、単一配信者(2人)のクロスルームPK | |
純粋なサーバー側ソリューションであり、クライアント側で追加処理不要 | 追加のボットの配信・受信およびミックスストリーミング費用が発生します | 最大11ルームでの同時クロスルームPKをサポートし、各ルームは最大16人の配信者が同時にクロスルームPKに参加できます | 複数のルーム、複数の配信者(複数人)によるクロスルームPK、純粋なサーバー側管理 |
フィードバック