当社のAppをダウンロードしてインストールし、多人数オーディオビデオルームの効果をご体験いただけます。これには、画面共有、美顔、低遅延ミーティングなど、TRTCの多人数オーディオビデオルームシーン関連の機能が含まれています。
TestMeetingRoom
)を入力し、作成をクリックします。注意:本機能はTencent CloudのTRTCとIMという2つの基本的なPaaSサービスを同時に使用し、TRTCをアクティブにした後、IMサービスを同期的にアクティブにすることができます。IMは付加価値サービスであり、課金ルールの詳細については 、Instant Messagingの料金説明をご参照ください。
TRTCFlutterScenesDemoクリックして当該ページに入り、ソースコードをCloneまたはダウンロードします。
設定変更画面に進み、ダウンロードしたソースコードパッケージに基づき、対応する開発環境を選択します。
/lib/debug/GenerateTestUserSig.dart
ファイルを見つけて開きます。
GenerateTestUserSig.dart
ファイル内の関連パラメータを設定します。
貼り付け完了後、貼り付けました。次のステップをクリックすれば、作成が完了します。
コンパイル完了後、 コンソール概要に戻る をクリックすれば終了です。
注意:
- ここで言及したUserSigの新規作成ソリューションでは、クライアントコードでSECRETKEYを設定します。この手法のうちSECRETKEYは逆コンパイルによって逆向きにクラッキングされやすく、キーがいったん漏洩すると、攻撃者はTencent Cloudトラフィックを盗用できるようになります。そのためこの手法は、ローカルのDemoクイックスタートおよび機能デバッグにのみ適合します。
- UserSigの正しい発行方法は、UserSigの計算コードをサーバーに統合し、Appのインターフェース向けに提供します。UserSigが必要なときは、Appから業務サーバーにリクエストを発出し動的にUserSigを取得します。詳細はUserSigに関するご質問をご参照ください。
注意:Android端末は実際のマシンで実行する必要があり、エミュレーターのデバッグはサポートされていません。
flutter pub get
を実行します。/iosプロジェクト
を開きます。ソースコードのTRTCMeetingDemoフォルダには、uiとmodelの2つのサブフォルダが含まれ、uiフォルダの中はいずれもインターフェースコードです。以下の表にはファイルまたはフォルダおよび対応するUIをリストアップし、二次調整に役立つようにしています。
ファイルまたはフォルダ | 機能説明 |
---|---|
TRTCMeetingIndex.dart | ミーティング作成または参加インターフェース |
TRTCMeetingRoom.dart | ビデオミーティングのメインインターフェース |
TRTCMeetingMemberList.dart | 参加者リストインターフェース |
TRTCMeetingSetting.dart | ビデオミーティング関連パラメータ設定インターフェース |
ソースコードの中のTRTCMeetingDemoフォルダにはuiとmodelの2つのサブフォルダが含まれ、modelフォルダには再利用可能なオープンソースコンポーネントTRTCMeetingが含まれています。TRTCMeeting.dart
ファイルの中からこのコンポーネントが提供するインターフェース関数を見つけ、対応するインターフェースを使用してカスマイズUIを実装することが可能です。
インタラクティブライブストリーミングコンポーネントTRTCMeetingは、TRTC SDKとIM SDKに依存しています。pubspec.yaml
を設定することで、自動的にダウンロードして更新できます。
プロジェクトのpubspec.yaml
に次の依存関係を記述します。
dependencies:
tencent_trtc_cloud: 最新バージョン番号
tencent_im_sdk_plugin: 最新バージョン番号
Info.plist
にカメラとマイクの権限申請を追加する必要があります。
<key>NSMicrophoneUsageDescription</key>
<string>通常の音声通話が行えるようにマイクの権限を承認します</string>
次のディレクトリ内のすべてのファイルをプロジェクトにコピーします。
lib/TRTCMeetingDemo/model/
sharedInstance
インターフェースを呼び出すと、TRTCMeetingコンポーネントのインスタンスオブジェクトを作成できます。registerListener
関数を呼び出して、コンポーネントのイベント通知を登録します。login
関数を呼び出してコンポーネントのログインを完了します。下表を参考にキーパラメータを入力してください。パラメータ名 | 作用 |
---|---|
sdkAppId | TRTCコンソール で SDKAppIDを表示できます。 |
userId | 現在のユーザーID。文字列タイプでは、英語のアルファベット(a-z、A-Z)、数字(0-9)、ハイフン(-)とアンダーライン(_)のみ使用できます。業務の実際のアカウントシステムと組み合わせてご自身で設定することをお勧めします。 |
userSig | Tencent Cloudによって設計されたセキュリティ保護署名。取得方法については、UserSigの計算、使用方法をご参照ください。 |
TRTCMeeting trtcMeeting = TRTCMeeting.sharedInstance();
trtcMeeting.registerListener(onListener);
ActionCallback res = await trtcMeeting.login(
GenerateTestUserSig.sdkAppId,
userId,
GenerateTestUserSig.genTestSig(userId),
);
if (res.code == 0) {
// ログイン成功
}
setSelfProfile
を呼び出して自身のニックネームおよびプロフィール画像を設定することができます。startCameraPreview
を呼び出してビデオ画面をキャプチャすることができ、startMicrophone
を呼び出して音声をキャプチャすることもできます。説明:エンタープライズ版以外のSDKは変顔やスタンプの機能をサポートしていません。
// 1. キャスターがニックネームとプロフィール画像を設定
trtcMeeting.setSelfProfile('my_name', 'my_avatar');
// 2. キャスターがミーティングを作成
ActionCallback res = await trtcMeeting.createMeeting(roomId);
if (res.code == 0) {
// ミーティング作成に成功
// 3. カメラと音声キャプチャを起動
trtcMeeting.startCameraPreview(true, TRTCCloudVideoViewId);
trtcMeeting.startMicrophone();
// 4. 美顔設定
trtcMeeting.getBeautyManager().setBeautyStyle(TRTCCloudDef.TRTC_BEAUTY_STYLE_PITU);
trtcMeeting.getBeautyManager().setBeautyLevel(6);
}
// 1. 参加者がニックネームとプロフィール画像を設定
trtcMeeting.setSelfProfile('my_name', 'my_avatar');
// 2. 参加者がenterMeetingを呼び出してミーティングルームに参加
ActionCallback res = await trtcMeeting.enterMeeting(roomId);
if (res.code == 0) {
// ミーティング参加に成功
// 3. カメラと音声キャプチャを起動
trtcMeeting.startCameraPreview(true, TRTCCloudVideoViewId);
trtcMeeting.startMicrophone();
// 4. 美顔設定
trtcMeeting.getBeautyManager().setBeautyStyle(TRTCCloudDef.TRTC_BEAUTY_STYLE_PITU);
trtcMeeting.getBeautyManager().setBeautyLevel(6);
}
// 5. 参加者が他のメンバーのカメラ起動の通知を受信し、再生が開始されます
trtcMeeting.registerListener(onListener);
onListener(TRTCMeetingDelegate type, param) {
switch (type) {
case TRTCMeetingDelegate.onUserVideoAvailable:
if (param['available']) {
trtcMeeting.startCameraPreview(
param['userId'],
TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG,
TRTCCloudVideoViewId
);
}else{
trtcMeeting.stopRemoteView(
param['userId'],
TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG
);
}
break;
}
}
注意:画面共有とカメラキャプチャは相互排他的な操作です。画面共有機能をアクティブにしたい場合は、先にstopCameraPreviewを呼び出してカメラキャプチャを停止してください。詳細については、TRTC SDKをご参照ください。
await trtcMeeting.stopCameraPreview();
trtcMeeting.startScreenCapture(
videoFps: 10,
videoBitrate: 1600,
videoResolution: TRTCCloudDef.TRTC_VIDEO_RESOLUTION_1280_720,
videoResolutionMode: TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT,
appGroup: iosAppGroup,
);
sendRoomTextMsgにより、ノーマルなテキストメッセージを送信でき、そのミーティングのすべての参加者がonRecvRoomTextMsgのコールバックを受信します。IMバックエンドにはデフォルトのセンシティブワードフィルタリングルールが備わっており、センシティブワードと判定されたテキストメッセージがクラウドで転送されることはありません。
// 発信側:テキストメッセージの発信
trtcMeeting.sendRoomTextMsg('Hello Word!');
// 受信側:テキストメッセージのモニタリング
trtcMeeting.registerListener(onListener);
onListener(TRTCMeetingDelegate type, param) {
switch (type) {
case TRTCMeetingDelegate.onRecvRoomTextMsg:
print( param['userName'] + 'からのメッセージ:' + param['message']+'を受信' );
break;
}
}
sendRoomCustomMsgにより、カスタム(コマンド)メッセージを送信でき、そのミーティングのすべての参加者がonRecvRoomCustomMsgのコールバックを受信します。カスタムメッセージは、通常カスタマイズしたシグナリングの転送に使用されます(例:ミュートの会場内制御など)。
// 送信側:カスタマイズしたcmdでミュートの通知を区別できます
// eg: "CMD_MUTE_AUDIO"はミュートの通知を表します
trtcMeeting.sendRoomCustomMsg('CMD_MUTE_AUDIO', '1');
// 受信側:カスタムメッセージのモニタリング
trtcMeeting.registerListener(onListener);
onListener(TRTCMeetingDelegate type, param) {
switch (type) {
case TRTCMeetingDelegate.onRecvRoomCustomMsg:
if (param['command'] == 'CMD_MUTE_AUDIO') {
// ミュートの通知を受信します
print(param['userName'] +'から' + 'のミュートの通知:' + param['message']'を受信');
trtcMeeting.muteLocalAudio(message == '1');
}
break;
}
}
この記事はお役に立ちましたか?