TRTCは、4種類の異なる入室モードをサポートしています。このうち、ビデオ通話(VideoCall)および音声通話(AudioCall)を総称して通話モードといい、ビデオインタラクティブストリーミング(Live)およびボイスインタラクティブストリーミング(VoiceChatRoom)を総称して ライブストリーミングモードといいます。
通話モードでのTRTCは、1つのルームに最大で300人の同時オンラインをサポートし最大で50人の同時発言をサポートします。1対1のビデオ通話、300人のビデオミーティング、オンライン問診、リモート面接、ビデオカスタマーサービス、オンライン人狼ゲームなどのユースケースに適合しています。
TRTCクラウドサービスは、「インターフェースモジュール」および「プロキシモジュール」という2種類の異なるタイプのサーバーノードから構成されています。
通話モードでは、TRTCルームのすべてのユーザーはインターフェースモジュールに割り当てられます。各ユーザーは「キャスター」に相当し、各ユーザーは随時発言でき(同時アップストリームの最大制限は50)、このためオンラインミーティングなどのユースケースに適していますが、1つのルームの人数制限は300人になります。
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 | マイク使用の許可をリクエストする理由を記述。例えば、チャットで音声を送信するには、マイクへのアクセスが必要です |
sharedInstance()インターフェースを使用して、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による同時入室をサポートしていません。
roomId
が示すオーディオ・ビデオルームに入室できます。該当するルームが存在しない場合は、SDKがフィールドroomId
の値をルームナンバーとする新しいルームを自動的に作成します。appScene
**パラメータを設定してください。誤った選択をすると、ラグ率または画面の解像度が想定レベルに到達しなくなります。TRTCAppScene.videoCall
に設定してください。TRTCAppScene.audioCall
に設定してください。onEnterRoom(result)
イベントをコールバックします。そのうち、パラメータ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:TRTCAppSceneVideoCall];
}
- (void)onEnterRoom:(NSInteger)result {
if (result > 0) {
[self toastTip:@"入室成功"];
}else{
[self toastTip:@"入室失敗"];
}
}
注意:
- 入室に失敗した場合は、SDKは同時に
onError
イベントもコールバックし、パラメータerrCode
(エラーコード)、errMsg
(エラー原因)およびextraInfo
(保留パラメータ)を返します。- すでに特定のルームにいる場合は、まず
exitRoom()
を呼び出して現在のルームを退出すると、もう一つのルームに入ることができるようになります。- 各端末のユースケースappSceneについては、統一する必要があります。統一していない場合、想定外のトラブルが生じる恐れがあります。
SDKは自動閲覧および手動閲覧をサポートします。
自動閲覧モードでは、特定のルームに入った後、SDKはルームのその他のユーザーのオーディオストリームを自動で受信します。これによって最適な「インスタントブロードキャスティング効果が得られます。
view
(表示)をバインドする必要があります。// インスタンスコード:通知に基づきリモート側ユーザーのビデオ画面を閲覧(または閲覧の取り消し)します。
- (void)onUserVideoAvailable:(NSString *)userId available:(BOOL)available {
UIView* remoteView = remoteViewDic[userId];
if (available) {
[_trtcCloud startRemoteView:userId streamType:TRTCVideoStreamTypeSmall view:remoteView];
}else{
[_trtcCloud stopRemoteView:userId streamType:TRTCVideoStreamTypeSmall];
}
}
説明:
onUserVideoAvailable()
イベントのコールバック受信した後、すぐにstartRemoteView()
を呼び出してビデオストリームを閲覧しない場合、SDKが5s以内にリモートからのビデオデータの受信を停止します。
setDefaultStreamRecvMode()インターフェースによって、SDKを手動閲覧モードに指定できます。手動閲覧モードでは、SDKはルーム内の他のユーザーの音声・ビデオデータを自動受信しません。手動で、API関数を介してトリガーする必要があります。
//サンプルコード:ローカルのオーディオ・ビデオストリーミングの公開
[self.trtcCloud startLocalPreview:_isFrontCamera view:self.view];
[self.trtcCloud startLocalAudio:TRTCAudioQualityMusic];
注意:Mac版SDKは、デフォルトでは、現在のシステムのデフォルトのカメラおよびマイクを使用します。setCurrentCameraDevice()およびsetCurrentMicDevice()を呼び出すことで、その他のカメラおよびマイクを選択することができます。
exitRoom()メソッドを呼び出してルームを退出します。SDKは退室する時に、カメラ、マイクなどのハードウェアデバイスを停止してリリースする必要があるたため、退室の動作は瞬時に完了するものではなく、onExitRoom()のコールバックを受信してはじめて、実際の退室操作が完了します。
// 退室を呼び出した後は、onExitRoomイベントのコールバックをお待ちください
[self.trtcCloud exitRoom];
- (void)onExitRoom:(NSInteger)reason {
NSLog(@"ルームから退出: reason: %ld", reason)
}
注意:Appの中で多くの音声ビデオのSDKを同時に統合した場合は、
onExitRoom
コールバックを受信してからその他の音声ビデオSDKを起動してください。そうしない場合は、ハード上の占有問題が生じることがあります。
この記事はお役に立ちましたか?