TRTCは、4種類の異なる入室モードをサポートしています。このうち、ビデオ通話(VideoCall)および音声通話(VoiceCall)を総称して通話モードといい、ビデオ・インタラクティブストリーミング(Live)およびボイス・インタラクティブストリーミング(VoiceChatRoom)を総称してライブストリーミングモードといいます。
ライブストリーミングモードでのTRTCは、1つのルームで最大10万人の同時接続をサポートし、300ms未満のマイク接続遅延、1000ms未満の視聴遅延およびマイクのオン・オフのスムーズな切り替え技術を備えています。低レイテンシーインタラクティブストリーム、10万人のインタラクティブ教室、ビデオ婚活、eラーニング、リモート研修、超大規模ミーティングなどのユースケースに適しています。
TRTCクラウドサービスは、「インターフェースモジュール」および「プロキシモジュール」という2種類の異なるタイプのサーバーノードから構成されています。
ライブストリーミングモードでは、TRTCはロールのコンセプトを導入し、ユーザーは「キャスター」および「視聴者」の2種類のロールに分けられ、「キャスター」はインターフェースモジュールに配分され、「視聴者」はプロキシモジュールに分配されます。同一ルームの視聴者の上限は10万人です。
「視聴者」をマイク・オンにしたい場合、まずロール(switchRole)を「キャスター」に切り替えると発言できます。ロールを切り替えることで、ユーザーをプロキシモジュールからインターフェースモジュールに移動させ、TRTC特有の低遅延視聴技術およびスムーズなマイクのオン/オフ切替技術によって、すべての切り替え時間を非常に短くすることができます。
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"
}
}
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による同時入室をサポートしていません。同時に入室した場合、相互に干渉します。
- 各端末のユースケースappSceneについては、統一する必要があります。統一していない場合、想定外のトラブルが生じる恐れがあります。
//サンプルコード:ローカルのオーディオ・ビデオストリーミングの公開
mTRTCCloud.setLocalViewFillMode(TRTC_VIDEO_RENDER_MODE_FIT);
mTRTCCloud.startLocalPreview(mIsFrontCamera, localView);
//ローカルビデオコーデックパラメータの設定
TRTCCloudDef.TRTCVideoEncParam encParam = new TRTCCloudDef.TRTCVideoEncParam();
encParam.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_960_540;
encParam.videoFps = 15;
encParam.videoBitrate = 1200;
encParam.videoResolutionMode = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT;
mTRTCCloud.setVideoEncoderParam(encParam);
mTRTCCloud.startLocalAudio();
role
を**TRTCCloudDef.TRTCRoleAnchor
**に設定します。これは現在のユーザーのロールがキャスターであることを表します。roomId
の値をルームナンバーとするオーディオ・ビデオルームを作成し、**appScene
**パラメータを指定することができます。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, TRTCCloudDef.TRTC_APP_SCENE_LIVE);
}
@Override
public void onEnterRoom(long result) {
if (result > 0) {
toastTip("入室成功,総消費時間[∖(result)]ms")
}else{
toastTip("入室失敗,エラーコード[∖(result)]")
}
}
role
を**TRTCCloudDef.TRTCRoleAudience
**に設定します。これは現在のユーザーのロールが視聴者であることを表します。roomId
が示すオーディオ・ビデオルームに入室し、**appScene
**パラメータを指定することができます。userId
を使用してstartRemoteView(userId, view)を呼び出せば、キャスターの画面を表示することができます。userId
を使用してstartRemoteView(userId, view)を呼び出せば、キャスターの画面を表示することができます。//サンプルコード:視聴者マイク・オン
mTrtcCloud.switchRole(TRTCCloudDef.TRTCRoleAnchor);
mTrtcCloud.startLocalAudio();
mTrtcCloud.startLocalPreview(mIsFrontCamera, localView);
//サンプルコード:視聴者マイク・オフ
mTrtcCloud.switchRole(TRTCCloudDef.TRTCRoleAudience);
mTrtcCloud.stopLocalAudio();
mTrtcCloud.stopLocalPreview();
TRTCでは、異なるオーディオ・ビデオルームにいる2人のキャスターが当初のライブストリーミングルームを退出しない場合にも、「ルーム間通話」機能によってマイク接続通話機能をプルし、「ルーム間マイク接続PK」を行うことができます。
roomId
とuserId
を接合して{"roomId": "978","userId": "userB"}
の形式にしたパラメータをインターフェース関数に渡す必要があります。connectOtherRoom()
を介してルーム間通話をする場合、ルーム「001」のユーザーはキャスターBのonUserVideoAvailable(B, true)
コールバックとonUserAudioAvailable(B, true)
コールバックを受信します。ルーム「002」のユーザーはキャスターAのonUserVideoAvailable(A, true)
コールバックとonUserAudioAvailable(A, true)
コールバックを受信します。//サンプルコード:ルーム間マイク接続PK
mTRTCCloud.ConnectOtherRoom(String.format("{\"roomId\":%s,\"userId\":\"%s\"}", roomId, username));
exitRoom()メソッドを呼び出してルームを退出します。SDKは退室する時に、カメラ、マイクなどのハードウェアデバイスを停止してリリースする必要があるため、退室の動作は瞬時に完了するものではなく、onExitRoom()のコールバックを受信してはじめて、実際に退室操作を完了したことになります。
// 退室を呼び出した後は、onExitRoomイベントのコールバックをお待ちください
mTRTCCloud.exitRoom()
@Override
public void onExitRoom(int reason) {
Log.i(TAG, "onExitRoom: reason = " + reason);
}
注意:Appの中で多くの音声ビデオのSDKを同時に統合した場合は、
onExitRoom
コールバックを受信してからその他の音声ビデオSDKを起動してください。そうしない場合は、ハード上の占有問題が生じることがあります。
この記事はお役に立ちましたか?