tencent cloud

Tencent Real-Time Communication

お知らせ・リリースノート
製品アップデート情報
Tencent Cloudオーディオビデオ端末SDKの再生アップグレードおよび承認チェック追加に関するお知らせ
TRTCアプリケーションのサブスクリプションパッケージサービスのリリースに関する説明について
製品の説明
製品概要
基礎概念
製品の機能
製品の強み
ユースケース
性能データ
購入ガイド
Billing Overview
無料時間の説明
Monthly subscription
Pay-as-you-go
TRTC Overdue and Suspension Policy
課金に関するよくあるご質問
Refund Instructions
初心者ガイド
Demo体験
Call
コンポーネントの説明(TUICallKit)
Activate the Service
Run Demo
クイック導入
オフライン通知
Conversational Chat
クラウドレコーディング(TUICallKit)
AI Noise Reduction
インターフェースのカスタマイズ
Calls integration to Chat
Additional Features
No UI Integration
Server APIs
Client APIs
Solution
ErrorCode
公開ログ
よくある質問
ライブ配信
Billing of Video Live Component
Overview
Activating the Service (TUILiveKit)
Demo のクイックスタート
No UI Integration
UI Customization
Live Broadcast Monitoring
Video Live Streaming
Voice Chat Room
Advanced Features
Client APIs
Server APIs
Error Codes
Release Notes
FAQs
RTC Engine
Activate Service
SDKのダウンロード
APIコードサンプル
Usage Guidelines
クライアント側 API
高度な機能
RTC RESTFUL API
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
コンソールガイド
アプリケーション管理
使用統計
監視ダッシュボード
開発支援
Solution
Real-Time Chorus
よくあるご質問
課金関連問題
機能関連
UserSig関連
ファイアウォールの制限の対応関連
インストールパッケージの圧縮に関するご質問
AndriodおよびiOS関連
Web端末関連
Flutter関連
Electron関連
TRTCCalling Web関連
オーディオビデオ品質関連
その他のご質問
旧バージョンのドキュメント
TUIRoom(Web)の統合
TUIRoom (Android)の統合
TUIRoom (iOS)の統合
TUIRoom (Flutter)の統合
TUIRoom (Electron)の統合
TUIRoom APIのクエリー
クラウドレコーディングと再生の実現(旧)
Protocols and Policies
セキュリティコンプライアンス認証
セキュリティホワイトペーパー
情報セキュリティの説明
Service Level Agreement
Apple Privacy Policy: PrivacyInfo.xcprivacy
TRTC ポリシー
プライバシーポリシー
データ処理とセキュリティ契約
用語集

Electron

PDF
フォーカスモード
フォントサイズ
最終更新日: 2024-07-19 15:12:39
ここでは主に、ルーム内の他のユーザーのオーディオビデオストリーミングをサブスクリプションする方法、すなわち他のユーザーのオーディオとビデオを再生する方法についてご説明します。便宜上、これ以降は「ルーム内にいる他のユーザー」を「リモートユーザー」と総称します。



呼び出しガイド

ステップ1:前のステップの完了

ドキュメントSDKのプロジェクトへのインポートを参照し、SDKのインポートを完了してください。

ステップ2:サブスクリプションモードの設定(必須ではありません)

TRTCCloudのsetDefaultStreamRecvModeインターフェースを呼び出すことでサブスクリプションモードを設定することができます。TRTCは、2つのサブスクリプションモードを提供しています。
自動サブスクリプション:SDKは、お客様側で追加の操作をしなくても、自動的にリモートユーザーの音声を再生します。これはSDKのデフォルトの動作です。
手動サブスクリプション:SDKは、自動的にリモートユーザーの音声をプルして再生しないため、手動で**muteRemoteAudio(userId, false)**を呼び出して音声を再生させる必要があります。
ご注意:
setDefaultStreamRecvModeを呼び出さなくても、SDKのデフォルトの動作は自動サブスクリプションである点にご注意ください。ただし、手動サブスクリプションに設定したい場合は、setDefaultStreamRecvModeはenterRoomの前に呼び出した場合にのみ有効であることにご注意ください。

ステップ3:TRTCルームへの入室

ドキュメント入室をご参照のうえ、現在のユーザーをTRTCルームに入室させます。入室に成功した場合にのみ、他のユーザーのオーディオビデオストリーミングをサブスクリプションすることができます。

ステップ4:オーディオストリームの再生

インターフェースmuteRemoteAudio("denny",true)を呼び出すことでリモートユーザーdennyの音声をミュートでき、その後、インターフェースmuteRemoteAudio('denny',false)を呼び出すことでミュートを解除できます。
import TRTCCloud from 'trtc-electron-sdk';
const rtcCloud = new TRTCCloud();

// Reference https://web.sdk.qcloud.com/trtc/electron/doc/zh-cn/trtc_electron_sdk/TRTCCloud.html#muteRemoteAudio
// Mute user with id denny
rtcCloud.muteRemoteAudio('denny', true);
// Unmute user with id denny
rtcCloud.muteRemoteAudio('denny', false);

ステップ5:ビデオストリームの再生

1. 再生の開始と停止(startRemoteView + stopRemoteView)

インターフェースstartRemoteViewを呼び出すことで、リモートユーザーのビデオ画面を再生することができます。ただし、ユーザーのビデオ画面のレンダリングウィジェットとして使用するviewオブジェクトをSDKに渡した場合に限ります。
startRemoteViewの最初のパラメータはリモートユーザーのuserId、2番目のパラメータはリモートユーザーのストリームタイプ、3番目のパラメータは渡す必要のあるviewオブジェクトです。そのうち2番目のパラメータstreamType(ストリームタイプ)には、次の3つのオプション値があります。
TRTCVideoStreamTypeBig:ユーザーのメインチャネル画面です。通常、ユーザーのカメラ画面を送信するために使用します。
TRTCVideoStreamTypeSub:ユーザーのサブチャネル画面です。通常、ユーザー画面と共有している画面を送信するために使用します。
TRTCVideoStreamTypeSmall:ユーザーの低解像度小画面です。これは、メインチャネルと相対するもので、リモートユーザーが「デュアルチャネルエンコーディング(enableEncSmallVideoStream)」を有効にした場合にのみ、そのユーザーの低解像度画面を再生することができるようになります。また、メインチャネル画面と低解像度小画面のうち、どちらか一方しか選択できません。
stopRemoteViewインターフェースを呼び出すと、特定のリモートユーザーのビデオ再生を停止することができます。また、stopAllRemoteViewインターフェースを呼び出すと、すべてのリモートユーザーのビデオ再生を停止することもできます。
// https://web.sdk.qcloud.com/trtc/electron/doc/zh-cn/trtc_electron_sdk/TRTCCloud.html#startRemoteViewをご参照ください

import TRTCCloud, { TRTCVideoStreamType } from 'trtc-electron-sdk';

const cameraView = document.querySelector('.user-dom');
const screenView = document.querySelector('.screen-dom');
const rtcCloud = new TRTCCloud();
// dennyのカメラ画面の再生(「メインチャネル画面」と呼びます)
rtcCloud.startRemoteView('denny', cameraView, TRTCVideoStreamType.TRTCVideoStreamTypeBig);
// dennyの画面共有画面の再生(「サブチャネル画面」と呼びます)
rtcCloud.startRemoteView('denny', screenView, TRTCVideoStreamType.TRTCVideoStreamTypeSub);
// dennyの低解像度画面の再生(メインチャネル画面と低解像度画面のうちどちらか一方のみ選択可能)
rtcCloud.startRemoteView('denny', cameraView, TRTCVideoStreamType.TRTCVideoStreamTypeSmall);
// dennyのカメラ画面の再生停止
rtcCloud.stopRemoteView('denny', TRTCVideoStreamType.TRTCVideoStreamTypeBig);
// すべてのビデオ画面の再生停止
rtcCloud.stopAllRemoteView();

2. 再生パラメータの設定(setRemoteRenderParams)

setRemoteRenderParamsによって、画面のフィルモード、回転角度およびイメージモードを設定することができます。
フィルモード:フィルとフィットがあり、どちらも画面の元のアスペクト比を維持できます。違いは黒い縁取りの有無です。
回転角度:0度、90度、180度および270度など、4つの回転角度が設定できます。
イメージモード:画面の左右イメージモードのことです。
// https://web.sdk.qcloud.com/trtc/electron/doc/zh-cn/trtc_electron_sdk/TRTCCloud.html#setRemoteRenderParamsをご参照ください
// リモートユーザーdennyのメインチャネル画面をフィルモードに設定し、左右のイメージモードを有効にします
import TRTCCloud, {
TRTCRenderParams, TRTCVideoStreamType, TRTCVideoRotation,
TRTCVideoFillMode, TRTCVideoMirrorType
} from 'trtc-electron-sdk';

const param = new TTRTCRenderParams(
TRTCVideoRotation.TRTCVideoRotation0,
TRTCVideoFillMode.TRTCVideoFillMode_Fill,
TRTCVideoMirrorType.TRTCVideoMirrorType_Enable
);
const rtcCloud = new TRTCCloud();
rtcCloud.setRemoteRenderParams('denny', TRTCVideoStreamType.TRTCVideoStreamTypeBig, param);

ステップ6:ルーム内にいるリモートユーザーのオーディオビデオステータスの感知

ステップ4ステップ5では、リモートユーザーに対して音声やビデオの再生を制御することができますが、十分な情報がないと以下の事項がわからなくなります。
現在、ルームにいるユーザーは誰か。
ユーザーたちはカメラやマイクをオンにしているか。
この問題を解決するには、SDKからのイベントコールバックのいくつかを監視する必要があります。
オーディオステータス変更通知(onUserAudioAvailable) リモートユーザーがマイクをオンやオフした場合、onUserAudioAvailable(userId,boolean)を監視することで、このステータスの変化を感知することができます。
ビデオステータス変更通知(onUserVideoAvailable) リモートユーザーがカメラをオンやオフにした場合、onUserVideoAvailable(userId,boolean)を監視することで、このステータスの変化を感知することができます。 リモートユーザーが画面共有画面をオンやオフにした場合、onUserVideoAvailable(userId,boolean)を監視することで、このステータスの変化を感知することができます。
ユーザーの入退室通知(onRemoteUserEnter/LeaveRoom) リモートユーザーが現在のルームに入るとき、onRemoteUserEnterRoom(userId)によってそのユーザーのuserIdを感知することができます。リモートユーザーが現在のルームから退出するとき、onRemoteUserLeaveRoom(userId, reason)によってそのユーザーのuserIdとそのユーザーの退出した理由を感知することができます。
ご注意:
正確に言うと、onRemoteUserEnter/LeaveRoomは、ロール(role)はキャスター(anchor)のユーザーの入退室通知のみを感知することができます。このような設計になっているのは、多数の視聴者(audience)がオンラインになっているルームでは人の出入りが頻繁であるため、ルームにいるすべてのユーザーが他のユーザーの入退出によって、「シグナリングストーム」攻撃を受けるのを避けるためです。
これらのイベントコールバックにより、どのユーザーがルームにいるか、彼らのカメラとマイクがオンになっているかどうかを把握することができます。次のサンプルコードをご参照ください。このサンプルコードでは、mCameraUserList、mMicrophoneUserListおよびmUserListを使用して次の事項を管理しています。
ルーム内にいるユーザー(正確にはキャスター)は誰なのか
そのうちカメラがオンになっているのはどのユーザーか
そのうちマイクがオンになっているのはどのユーザーか
import TRTCCloud from 'trtc-electron-sdk';
let openCameraUserList = [];
let openMicUserList = [];
let roomUserList = [];

function onUserVideoAvailable(userId, available) {
if (available === 1) {
openCameraUserList.push(userId);
} else {
openCameraUserList = openCameraUserList.filter((item) => item !== userId);
}
}

function onUserAudioAvailable(userId, available) {
if (available === 1) {
openMicUserList.push(userId);
} else {
openMicUserList = openMicUserList.filter((item) => item !== userId);
}
}

function onRemoteUserEnterRoom(userId) {
roomUserList.push(userId);
}

function onRemoteUserLeaveRoom(userId, reason) {
roomUserList = roomUserList.filter((item) => item !== userId);
}

const rtcCloud = new TRTCCloud();
rtcCloud.on('onUserVideoAvailable', onUserVideoAvailable);
rtcCloud.on('onUserAudioAvailable', onUserAudioAvailable);
rtcCloud.on('onRemoteUserEnterRoom', onRemoteUserEnterRoom);
rtcCloud.on('onRemoteUserLeaveRoom', onRemoteUserLeaveRoom);

アドバンスガイドライン

同じ「ミュート」ですが、違いは何ですか。

ビジネスニーズを深掘りしていくに従い、「ミュート」には3つのタイプがあることがわかると思います。「ミュート」という名称は同じでも、技術的な原理はまったく異なります。
1つめ:再生側のオーディオストリームのサブスクリプションを停止する muteRemoteAudio("denny", true)関数を呼び出すと、リモートユーザーdennyの音声をもう再生したくないという意味になり、SDKはdennyのオーディオデータストリームのプルを停止します。このモードはトラフィックの節約になります。ただし、再度dennyの音声を再生したい場合は、SDKがオーディオデータをプルするプロセスを再起動する必要があるため、「ミュート」状態から「アンミュート」状態への復帰速度が遅くなります。
2つめ:再生音量をゼロに調整する ビジネスシナリオでミュートの切り替えに高速なレスポンス速度が求められる場合、setRemoteAudioVolume("denny", 0)によってリモートユーザーdennyの再生音量をゼロに設定することができます。このインターフェースはネットワーク操作を伴わないため、影響速度は非常に速くなります。
3つめ:リモートユーザーが自分でマイクをオフにする ここでご説明する操作はすべて再生側の操作で、これらの操作によって生じる効果は現在のユーザーにのみ有効です。例えば、muteRemoteAudio("denny", true)によってリモートユーザーdennyをミュートに設定しても、ルーム内の他のユーザーにはdennyの音声が聞こえます。 dennyを完全にミュートにするには、dennyのオーディオ公開の動作に影響を与える必要があります。これについては、次のドキュメントオーディオビデオストリーミングの公開で詳しくご説明しています。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック