TRTCは、4種類の異なる入室モードをサポートしています。このうち、ビデオ通話(VideoCall)および音声通話(AudioCall)を総称して通話モードといい、ビデオインタラクティブストリーミング(Live)およびボイスインタラクティブストリーミング(VoiceChatRoom)を総称して ライブストリーミングモードといいます。
通話モードでのTRTCは、1つのルームに最大で300人の同時オンラインをサポートし最大で50人の同時発言をサポートします。1対1のビデオ通話、300人のビデオミーティング、オンライン問診、リモート面接、ビデオカスタマーサービス、オンライン人狼ゲームなどのユースケースに適合しています。
TRTCクラウドサービスは、「インターフェースモジュール」および「プロキシモジュール」という2種類の異なるタイプのサーバーノードから構成されています。
通話モードでは、TRTCルームのすべてのユーザーはインターフェースモジュールに割り当てられます。各ユーザーは「キャスター」に相当し、各ユーザーは随時発言でき(同時アップストリームの最大制限は50)、このためオンラインミーティングなどのユースケースに適していますが、1つのルームの人数制限は300人になります。
Github にログインし、本ファイルに関連するサンプルコードを取得することができます。
説明:Githubへのアクセスが遅い場合は、 TXLiteAVSDK_TRTC_Android_latest.zipを直接ダウンロードすることもできます。
以下の方式を選択して TRTC SDK をプロジェクトに統合することができます。
TRTC SDKは、mavenCentral ライブラリにリリースされています。更新を自動的にダウンロードするようにgradleを構成することで自動でダウンロード、更新できます。
Android Studioを使用して、SDKを統合予定のプロジェクト(TRTC-API-Exampleは統合が完了済み、サンプルコードは参照用として提供)を開き、その後簡単な手順でapp/build.gradle
ファイルを修正するだけで、SDKの統合を完了できます。
dependenciesの中にTRTCSDKの依存を追加します。
dependencies {
compile 'com.tencent.liteav:LiteAVSDK_TRTC:latest.release'
}
defaultConfigでAppが使用するCPUアーキテクチャを指定します。
説明:現在 TRTC SDKは、armeabi-v7a、arm64-v8aをサポートしています。
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
【Sync Now】をクリックし、SDKを同期します。
mavenCentralへのネットワーク接続に問題がない場合、SDKは自動的にダウンロードされ、プロジェクトに統合されます。
ZIP圧縮パッケージを直接ダウンロードして、 クイックインテグレーション(Android)を参照してSDKをプロジェクトに統合することができます。
AndroidManifest.xml
ファイルにカメラ、マイクおよびネットワークのアクセス許可のリクエストを追加します。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
sharedInstance() インターフェースを使用してTRTCCloud
インスタンスを作成します。
// trtcCloudインスタンスを作成
mTRTCCloud = TRTCCloud.sharedInstance(getApplicationContext());
mTRTCCloud.setListener(new TRTCCloudListener(){
// コールバック処理
...
});
setListener
属性を設定しイベントのコールバックを登録し、関連イベントおよびエラー通知をモニタします。
// エラー通知のモニタ。エラー通知は、 SDK が動作を継続できないことを示します
@Override
public void onError(int errCode, String errMsg, Bundle extraInfo) {
Log.d(TAG, "sdk callback onError");
if (activity != null) {
Toast.makeText(activity, "onError: " + errMsg + "[" + errCode+ "]" , Toast.LENGTH_SHORT).show();
if (errCode == TXLiteAVCode.ERR_ROOM_ENTER_FAIL) {
activity.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
**パラメータを設定してください。誤った選択をすると、ラグ率または画面の解像度が想定レベルに到達しなくなります。TRTC_APP_SCENE_VIDEOCALL
と設定してください。TRTC_APP_SCENE_AUDIOCALL
に設定してください。onEnterRoom(result)
イベントをコールバックします。そのうち、パラメータresult
が0より大きいときは入室成功を示し、具体的な数値は入室のために消費した時間になります。単位はミリ秒(ms)です。result
が0より小さいときは入室失敗を示し、具体的な数値は入室失敗のエラーコードになります。public void enterRoom() {
TRTCCloudDef.TRTCParams trtcParams = new TRTCCloudDef.TRTCParams();
trtcParams.sdkAppId = sdkappid;
trtcParams.userId = userid;
trtcParams.roomId = 908;
trtcParams.userSig = usersig;
mTRTCCloud.enterRoom(trtcParams, TRTC_APP_SCENE_VIDEOCALL);
}
@Override
public void onEnterRoom(long result) {
if (result > 0) {
toastTip("入室成功,総消費時間[∖(result)]ms")
}else{
toastTip("入室失敗,エラーコード[∖(result)]")
}
}
注意:
- 入室に失敗した場合は、SDKは同時に
onError
イベントもコールバックし、パラメータerrCode
(エラーコード)、errMsg
(エラー原因)およびextraInfo
(保留パラメータ)を返します。- すでに特定のルームにいる場合は、まず
exitRoom()
を呼び出して現在のルームを退出すると、もう一つのルームに入ることができるようになります。- 各端末のユースケースappSceneについては、統一する必要があります。統一していない場合、想定外のトラブルが生じる恐れがあります。
SDKは自動閲覧および手動閲覧をサポートします。
自動閲覧モードでは、特定のルームに入った後、SDKはルームのその他のユーザーのオーディオストリームを自動で受信します。これによって最適な「秒速開始」効果が得られます。
view
表示をバインドする必要があります。@Override
public void onUserVideoAvailable(String userId, boolean available) {
TXCloudVideoView remoteView = remoteViewDic[userId];
if (available) {
mTRTCCloud.startRemoteView(userId, remoteView);
mTRTCCloud.setRemoteViewFillMode(userId, TRTC_VIDEO_RENDER_MODE_FIT);
}else{
mTRTCCloud.stopRemoteView(userId);
}
}
説明:
onUserVideoAvailable()
イベントのコールバックを受信した後、すぐにstartRemoteView()
を呼び出してビデオストリームを閲覧しない場合、SDKは5s以内にリモートからのビデオデータの受信を停止します。
setDefaultStreamRecvMode()インターフェースを介して、SDKを手動閲覧モードに指定できます。手動閲覧モードでは、SDKはルーム内の他のユーザーの音声・ビデオデータを自動受信しません。手動で、API関数を介してトリガーする必要があります。
//サンプルコード:ローカルのオーディオ・ビデオストリーミングの公開
mTRTCCloud.setLocalViewFillMode(TRTC_VIDEO_RENDER_MODE_FIT);
mTRTCCloud.startLocalPreview(mIsFrontCamera, mLocalView);
mTRTCCloud.startLocalAudio();
exitRoom()メソッドを呼び出してルームを退出します。SDKは退室する時に、カメラ、マイクなどのハードウェアデバイスを停止してリリースする必要があるため、退室の動作は瞬時に完了するものではなく、onExitRoom()のコールバックを受信してはじめて、実際に退室操作を完了したことになります。
// 退室を呼び出した後は、onExitRoomイベントのコールバックをお待ちください
mTRTCCloud.exitRoom()
@Override
public void onExitRoom(int reason) {
Log.i(TAG, "onExitRoom: reason = " + reason);
}
注意:Appの中で多くの音声ビデオのSDKを同時に統合した場合は、
onExitRoom
コールバックを受信してからその他の音声ビデオSDKを起動してください。そうしない場合は、ハード上の占有問題が生じることがあります。
この記事はお役に立ちましたか?