TRTCは、4種類の異なる入室モードをサポートしています。このうち、ビデオ通話(VideoCall)および音声通話(VoiceCall)を総称して通話モードといい、ビデオ・インタラクティブストリーミング(Live)およびボイス・インタラクティブストリーミング(VoiceChatRoom)を総称してライブストリーミングモードといいます。
ライブストリーミングモードでのTRTCは、1つのルームで最大10万人の同時接続をサポートし、300ms未満のマイク接続遅延、1000ms未満の視聴遅延およびマイクのオン・オフのスムーズな切り替え技術を備えています。低レイテンシーインタラクティブストリーム、10万人のインタラクティブ教室、ビデオ婚活、eラーニング、リモート研修、超大規模ミーティングなどのユースケースに適しています。
TRTCクラウドサービスは、「インターフェースモジュール」および「プロキシモジュール」という2種類の異なるタイプのサーバーノードから構成されています。
ライブストリーミングモードでは、TRTCはロールのコンセプトを導入し、ユーザーは「キャスター」および「視聴者」の2種類のロールに分けられ、「キャスター」はインターフェースモジュールに配分され、「視聴者」はプロキシモジュールに分配されます。同一ルームの視聴者の上限は10万人です。
「視聴者」をマイク・オンにしたい場合、まずロール(switchRole)を「キャスター」に切り替えると発言できます。ロールを切り替えることで、ユーザーをプロキシモジュールからインターフェースモジュールに移動させ、TRTC特有の低遅延視聴技術およびスムーズなマイクのオン/オフ切替技術によって、すべての切り替え時間を非常に短くすることができます。
Github にログインし、本ファイルに関連するサンプルコードを取得することができます。
Githubへのアクセスが遅い場合は、TXLiteAVSDK_TRTC_iOS_latest.zipを直接ダウンロードすることもできます。
以下の方式を選択して TRTC SDK をプロジェクトに統合することができます。
CocoaPodsをインストールします。具体的な操作は CocoaPods公式サイトインストールの説明をご参照ください。
現在のプロジェクトのルートディレクトリのPodfile
ファイルを開き、以下のコンテンツを追加します。
説明:このディレクトリに
Podfile
ファイルがない場合は、まずpod init
コマンドを実行しファイルを新規作成してから、以下の内容を追加してください。
target 'Your Project' do
pod 'TXLiteAVSDK_TRTC'
end
以下のコマンドを実行して TRTC SDK をインストールします。
pod install
インストールが成功したら、現在のプロジェクトのルートディレクトリに xcworkspace ファイルが生成されます。
4. 新規作成した xcworkspace ファイルを開けばOKです。
一時的にCocoaPods環境をインストールしたくない場合、またはインストール済みだがCocoaPodsライブラリへのアクセスがやや遅い場合は、 ZIP圧縮パッケージを直接ダウンロードして、クイックインテグレーション(iOS)を参照してSDKをプロジェクトに統合することができます。
Info.plist
ファイルにカメラおよびマイクのアクセス許可のリクエストを追加します。
Key | Value |
---|---|
Privacy - Camera Usage Description | カメラ使用の許可をリクエストする理由を記述。例えば、ビデオチャットでビデオを表示するには、カメラへのアクセスが必要です |
Privacy - Microphone Usage Description | マイク使用の許可をリクエストする理由を記述。例えば、チャットで音声を送信するには、マイクへのアクセスが必要です |
TRTCCloud
インスタンスを作成します。// trtcCloudインスタンスを作成
_trtcCloud = [TRTCCloud sharedInstance];
_trtcCloud.delegate = self;
delegate
属性を設定しイベントのコールバックを登録し、関連イベントおよびエラー通知をモニタします。// エラー通知は監視すべきもので、捕捉してユーザーに通知する必要があります
- (void)onError:(TXLiteAVError)errCode errMsg:(NSString *)errMsg extInfo:(NSDictionary *)extInfo {
if (ERR_ROOM_ENTER_FAIL == errCode) {
[self toastTip:@"入室失敗"];
[self.trtcCloud exitRoom];
}
}
enterRoom()インターフェースを呼び出す時に、キーパラメータTRTCParamsを入力する必要があります。このパラメータに含まれる入力必須のフィールドは下表に示すとおりです。
パラメータ名 | フィールドタイプ | 補足説明 | 記入例 |
---|---|---|---|
sdkAppId | 数字 | アプリケーションID。TRTCコンソールでSDKAppIDを表示できます。 | 1400000123 |
userId | 文字列 | アルファベットの大文字、小文字(a-z、A-Z)、数字(0-9)、下線およびハイフンのみを許可。ビジネスの実際のアカウントシステムを組み合わせて設定することをお勧めします。 | test_user_001 |
userSig | 文字列 | userIdを基にuserSigを計算します。計算方法はUserSigの計算方法をご参照ください。 | eJyrVareCeYrSy1SslI... |
roomId | 数字 | 数字タイプのルームナンバー。文字列形式のルームナンバーを使用したい場合は、TRTCParamsのstrRoomIdをご使用ください。 | 29834 |
注意:
- TRTCは、2つの同じuserIdによる同時入室をサポートしていません。同時に入室した場合、相互に干渉します。
- 各端末のユースケースappSceneについては、統一する必要があります。統一していない場合、想定外のトラブルが生じる恐れがあります。
//サンプルコード:ローカルのオーディオ・ビデオストリーミングの公開
[self.trtcCloud startLocalPreview:_isFrontCamera view:self.view];
//ローカルビデオコーデックパラメータの設定
TRTCVideoEncParam *encParams = [TRTCVideoEncParam new];
encParams.videoResolution = TRTCVideoResolution_640_360;
encParams.videoBitrate = 550;
encParams.videoFps = 15;
[self.trtcCloud setVideoEncoderParam:encParams];
1.キャスター側は、getBeautyManager()を呼び出すと、美顔設定インターフェース[TXBeautyManagerを取得できます。
2. キャスター側は、setBeautyStyle()を呼び出すと、美顔スタイルを設定できます。
role
を **TRTCRoleType.anchor
**に設定します。これは現在のユーザーのロールがキャスターであることを表します。roomId
の値をルームナンバーとするオーディオ・ビデオルームを作成し、**appScene
**パラメータを指定することができます。result
が0より大きいときは入室成功を意味し、具体的な数値は入室してからの消費時間であり、単位はミリ秒(ms)です;result
が0より小さい時は入室失敗を意味し、具体的な数値は入室失敗のエラーコードになります。- (void)enterRoom() {
TRTCParams *params = [TRTCParams new];
params.sdkAppId = SDKAppID;
params.roomId = _roomId;
params.userId = _userId;
params.role = TRTCRoleAnchor;
params.userSig = [GenerateTestUserSig genTestUserSig:params.userId];
[self.trtcCloud enterRoom:params appScene:TRTCAppSceneLIVE];
}
- (void)onEnterRoom:(NSInteger)result {
if (result > 0) {
[self toastTip:@"入室成功"];
}else{
[self toastTip:@"入室失敗"];
}
}
role
を**TRTCRoleType.audience
**に設定します。これは現在のユーザーのロールが視聴者であることを表します。roomId
が示すオーディオ・ビデオルームに入室し、**appScene
**パラメータを指定することができます。userId
を使用してstartRemoteView(userId, view: view)を呼び出せば、キャスターの画面を表示することができます。userId
を使用して、startRemoteView(userId, view: view)を呼び出せば、キャスターの画面を表示することができます。//サンプルコード:視聴者マイク・オン
[self.trtcCloud switchRole:TRTCRoleAnchor];
[self.trtcCloud startLocalAudio:TRTCAudioQualityMusic];
[self.trtcCloud startLocalPreview:_isFrontCamera view:self.view];
//サンプルコード:視聴者マイク・オフ
[self.trtcCloud switchRole:TRTCRoleAudience];
[self.trtcCloud stopLocalAudio];
[self.trtcCloud stopLocalPreview];
TRTCでは、異なるオーディオ・ビデオルームにいる2人のキャスターが当初のライブストリーミングルームを退出しない場合にも、「ルーム間通話」機能によってマイク接続通話機能をプルし、「ルーム間マイク接続PK」を行うことができます。
1.キャスターAが、connectOtherRoom()インターフェースを呼び出します。インターフェースパラメータは現在、JSON形式を採用しており、キャスターBのroomId
とuserId
を接合して、形式が{"roomId": "978","userId": "userB"}
となるパラメータをインターフェース関数に渡す必要があります。
2. クロスルームに成功すると、キャスターAは onConnectOtherRoom()のイベントコールバックを受け取ります。同時に、2つのライブストリーミングルームのすべてのユーザーがonUserVideoAvailable()とonUserAudioAvailable()のイベント通知を受け取ります。
例えば、ルーム「001」のキャスターAがルーム「002」のキャスターBとconnectOtherRoom()
を介してルーム間通話をする場合、ルーム「001」のユーザーはキャスターBのonUserVideoAvailable(B, available: true)
コールバックとonUserAudioAvailable(B, available: true)
コールバックを受信します。ルーム「002」のユーザーはキャスターAのonUserVideoAvailable(A, available: true)
コールバックとonUserAudioAvailable(A, available: true)
コールバックを受信します。
3. 2つのルームにいるユーザーは、startRemoteView(userId, view: view)を呼び出すことで、もう一方のルームのキャスターの画面を表示することができ、音声が自動再生されます。
//サンプルコード:ルーム間マイク接続PK
NSMutableDictionary * jsonDict = [[NSMutableDictionary alloc] init];
[jsonDict setObject:@([_otherRoomIdTextField.text intValue]) forKey:@"roomId"];
[jsonDict setObject:_otherUserIdTextField.text forKey:@"userId"];
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil];
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[self.trtcCloud connectOtherRoom:jsonString];
exitRoom()メソッドを呼び出してルームを退出します。SDKは退室する時に、カメラ、マイクなどのハードウェアデバイスを停止してリリースする必要があるたため、退室の動作は瞬時に完了するものではなく、onExitRoom()のコールバックを受信してはじめて、実際の退室操作が完了します。
// 退室を呼び出した後は、onExitRoomイベントのコールバックをお待ちください
[self.trtcCloud exitRoom];
- (void)onExitRoom:(NSInteger)reason {
NSLog(@"ルームから退出: reason: %ld", reason)
}
注意:Appの中で多くの音声ビデオのSDKを同時に統合した場合は、
onExitRoom
コールバックを受信してからその他の音声ビデオSDKを起動してください。そうしない場合は、ハード上の占有問題が生じることがあります。
この記事はお役に立ちましたか?