TRTCは、4種類の異なる入室モードをサポートしています。このうち、ビデオ通話(VideoCall)および音声通話(VoiceCall)を総称して通話モードといい、ビデオ・インタラクティブストリーミング(Live)およびボイス・インタラクティブストリーミング(VoiceChatRoom)を総称して ライブストリーミングモードといいます。
通話モードでのTRTCは、1つのルームに最大で300人の同時オンラインをサポートし最大で50人の同時発言をサポートします。1対1のビデオ通話、300人のビデオミーティング、オンライン問診、リモート面接、ビデオカスタマーサービス、オンライン人狼ゲームなどのユースケースに適合しています。
TRTCクラウドサービスは、「インターフェースモジュール」および「プロキシモジュール」という2種類の異なるタイプのサーバーノードから構成されています。
通話モードでは、TRTCルームのすべてのユーザーはインターフェースモジュールに割り当てられます。各ユーザーは「キャスター」に相当し、各ユーザーは随時発言でき(同時アップストリームの最大制限は50)、このためオンラインミーティングなどのユースケースに適していますが、1つのルームの人数制限は300人になります。
Githubにログインして、このドキュメントに関連したサンプルコードを取得することができます。
初めにドキュメントSimpleDemoクイックスタート(Electron)を読み、ドキュメントのガイドに従って、提供されている公式SimpleDemoクイックスタートを実行してください。
SimpleDemoが順調に動作する場合は、プロジェクトにおいてElectronのインストール方法をお客様が把握していることを意味します。
[手順1]](#step1) が正常に動作し、予想どおりの効果があった場合は、 Electron環境のインストール方法を把握していることを意味します。
trtc-electron-sdk
をインストールすることもできます。npm install trtc-electron-sdk --save
trtc-electron-sdk
インスタンスの新規作成:
import TRTCCloud from 'trtc-electron-sdk';
let trtcCloud = new TRTCCloud();
onError
イベントの監視:
// エラー通知は監視すべきもので、捕捉してユーザーに通知する必要があります
let onError = function(err) {
console.error(err);
};
trtcCloud.on('onError',onError);
enterRoom()インターフェースを呼び出すときはキーパラメータTRTCParamsを入力する必要があります。このパラメータに含まれる入力必須フィールドは下表に示すとおりです。
パラメータ | タイプ | 説明 | サンプル |
---|---|---|---|
sdkAppId | 数字 | アプリケーションID。 コンソール >【アプリケーション管理】>【アプリケーション情報】にあります。 | 1400000123 |
userId | 文字列 | アルファベットの大文字、小文字(a-z、A-Z)、数字(0-9)、下線およびハイフンのみを許可。ビジネスの実際のアカウントシステムを組み合わせて設定することをお勧めします。 | test_user_001 |
userSig | 文字列 | userIdを基にuserSigを計算できます。計算方法はUserSigの計算方法をご参照ください。 | eJyrVareCeYrSy1SslI... |
roomId | 数字 | 数字タイプのルームナンバー。文字列形式のルームナンバーを使用したい場合は、TRTCParamsのstrRoomIdをご使用ください。 | 29834 |
import {
TRTCParams,
TRTCRoleType
} from "trtc-electron-sdk/liteav/trtc_define";
let param = new TRTCParams();
param.sdkAppId = 1400000123;
param.roomId = 29834;
param.userId = 'test_user_001';
param.userSig = 'eJyrVareCeYrSy1SslI...';
注意:
- TRTCは、2つの同じuserIdによる同時入室をサポートしていません。同時に入室した場合、相互に干渉します。
- 各端末のユースケースappSceneについては、統一する必要があります。統一していない場合、想定外のトラブルが生じる恐れがあります。
roomId
が示すオーディオ・ビデオルームに参加できます。該当するルームが存在しない場合、SDKはフィールドroomId
の値をルームナンバーとする新しいルームを自動的に作成します。appScene
パラメータを設定してください。誤った選択をすると、ラグ率または画面の解像度が想定のレベルに到達しなくなります。TRTCAppScene.TRTCAppSceneVideoCall
に設定してください。TRTCAppScene.TRTCAppSceneAudioCall
に設定してください。
説明:
TRTCAppScene
の詳細な説明については、TRTCAppScene をご参照ください。
result
が0より大きいときは、入室成功を意味し、具体的な数値は入室のために消費した時間となります。単位はミリ秒(ms)です。result
が0より小さいときは、入室失敗を意味し、具体的な数値は入室失敗のエラーコードとなります。import TRTCCloud from 'trtc-electron-sdk';
import { TRTCParams, TRTCAppScene } from "trtc-electron-sdk/liteav/trtc_define";
let trtcCloud = new TRTCCloud();
let onEnterRoom = function (result) {
if (result > 0) {
console.log(`onEnterRoom、入室成功、${result}秒を使用`);
}else{
console.warn(`onEnterRoom: 入室失敗 ${result}`);
}
};
/ /入室成功イベントを閲覧
trtcCloud.on('onEnterRoom', onEnterRoom);
// 入室。ルームが存在しない場合は、TRTCバックエンドは新規ルームを自動作成
let param = new TRTCParams();
param.sdkAppId = 1400000123;
param.roomId = 29834;
param.userId = 'test_user_001';
param.userSig = 'eJyrVareCeYrSy1SslI...';
trtcCloud.enterRoom(param, TRTCAppScene.TRTCAppSceneVideoCall);
SDKは、自動閲覧モードおよび手動閲覧モードの2種類のモードをサポートします。自動閲覧はインスタントブロードキャスティング速度を追求するので、少人数で通話するユースケースに適しています;手動閲覧はトラフィックの節約を追求するので、人数が多いミーティングでのユースケースに適しています。
特定のルームに入った後、SDKはルームのその他のユーザーのオーディオストリームを自動で受信します。これによって最高の「インスタントブロードキャスティング」効果に達します。
view
(表示)をバインドする必要があります。TRTCVideoFillMode.TRTCVideoFillMode_Fill
モード:塗りつぶしを意味し、画面は同じ比率で拡大およびトリミングできますが、黒い縁取りは付きません。TRTCVideoFillMode.TRTCVideoFillMode_Fit
モード:適応を意味し、画面は同じ比率で縮小してスクリーンにフィットしてそのコンテンツを完全に表示しますが、黒い縁取りが付くことがあります。<div id="video-container"></div>
<script>
import TRTCCloud from 'trtc-electron-sdk';
const trtcCloud = new TRTCCloud();
const videoContainer = document.querySelector('#video-container');
const roomId = 29834;
/**
* ビデオのカメラ起動の有無
* @param {number} uid - ユーザーID
* @param {boolean} available - 画面の起動の有無
**/
let onUserVideoAvailable = function (uid, available) {
console.log(`onUserVideoAvailable: uid: ${uid}, available: ${available}`);
if (available === 1) {
let id = `${uid}-${roomId}-${TRTCVideoStreamType.TRTCVideoStreamTypeBig}`;
let view = document.getElementById(id);
if (!view) {
view = document.createElement('div');
view.id = id;
videoContainer.appendChild(view);
}
trtcCloud.startRemoteView(uid, view);
trtcCloud.setRemoteViewFillMode(uid, TRTCVideoFillMode.TRTCVideoFillMode_Fill);
}else{
let id = `${uid}-${roomId}-${TRTCVideoStreamType.TRTCVideoStreamTypeBig}`;
let view = document.getElementById(id);
if (view) {
videoContainer.removeChild(view);
}
}
};
// インスタンスコード:通知に基づきリモート側ユーザーのビデオ画面を閲覧(または閲覧の取り消し)します。
trtcCloud.on('onUserVideoAvailable', onUserVideoAvailable);
</script>
説明:
onUserVideoAvailable()
イベントのコールバックを受信した後、すぐにstartRemoteView()
を呼び出してビデオストリームを閲覧しない場合、SDKは5s以内にリモートからのビデオデータの受信を停止します。
setDefaultStreamRecvMode(autoRecvAudio, autoRecvVideo)インターフェースによって、SDKを手動閲覧モードに指定できます。手動閲覧モードでは、SDKはルーム内のその他ユーザーの音声ビデオデータを自動受信しませんので、API関数を介して、手動でトリガーする必要があります。
TRTCVideoFillMode.TRTCVideoFillMode_Fill
モードは塗りつぶしを意味し、画面は同じ比率で拡大およびトリミングできますが、黒い縁取りは付きません。TRTCVideoFillMode.TRTCVideoFillMode_Fit
は適応を意味し、画面は同じ比率で縮小してスクリーンにフィットしてそのコンテンツを完全に表示しますが、黒い縁取りが付くことがあります。//サンプルコード:ローカルのオーディオ・ビデオストリーミングの公開
trtcCloud.startLocalPreview(view);
trtcCloud.setLocalViewFillMode(TRTCVideoFillMode.TRTCVideoFillMode_Fill);
trtcCloud.startLocalAudio();
//ローカルビデオコーデックパラメータの設定
let encParam = new TRTCVideoEncParam();
encParam.videoResolution = TRTCVideoResolution.TRTCVideoResolution_640_360;
encParam.resMode = TRTCVideoResolutionMode.TRTCVideoResolutionModeLandscape;
encParam.videoFps = 25;
encParam.videoBitrate = 600;
encParam.enableAdjustRes = true;
trtcCloud.setVideoEncoderParam(encParam);
注意:SDKはデフォルトでは、現在のシステムのデフォルトのカメラおよびマイクを使用します。setCurrentCameraDevice()およびsetCurrentMicDevice()を呼び出して、その他のカメラおよびマイクを選択することができます。
exitRoom()メソッドを呼び出してルームを退出します。SDKは退出時にカメラやマイクなどのハードデバイスを停止またはリリースする必要があるため、退出動作は一瞬では完了しません。退出操作を完了するにはonExitRoom()コールバックを受信する必要があります。
// 退室を呼び出した後は、onExitRoomイベントのコールバックをお待ちください
let onExitRoom = function (reason) {
console.log(`onExitRoom, reason: ${reason}`);
};
trtcCloud.exitRoom();
trtcCloud.on('onExitRoom', onExitRoom);
注意:Electronプログラムで複数の音声ビデオSDKを同時に統合した場合は、
onExitRoom
を受信してコールバックしてから、その他の音声ビデオSDKを起動してください。そうしない場合は、ハード上の占有問題が生じることがあります。
この記事はお役に立ちましたか?