ここでは主に、視聴者としてライブストリーミングルームに入室し、マイク接続して双方向通信を行うシナリオをご紹介します。キャスターとして入室してライブストリーミングを行うシナリオは、TRTCの通話シナリオと同様です。TRTC通話をご参照ください。
Demoをクリックしてオーディオビデオ機能の体験に移動し、またはGitHub にログインして、このドキュメントに関連するサンプルコードを取得できます。
TRTC.createClient()メソッドによって、Clientオブジェクトを作成します。パラメータの設定は次のとおりです。
mode
:インタラクティブライブストリーミングモードの場合、live
に設定しますsdkAppId
:Tencent Cloudから申請したsdkAppIduserId
:ユーザーIDuserSig
:ユーザー署名const client = TRTC.createClient({
mode: 'live',
sdkAppId,
userId,
userSig
});
Client.join()を呼び出して、オーディオビデオ通話ルームに参加します。パラメータの設定は次のとおりです。
roomId
:ルームIDrole
:ユーザーロールanchor
:キャスター。キャスターのロールには、ローカルストリームを公開し、リモートストリームを受信する権限があります。デフォルトはキャスターロールです。audience
:視聴者。視聴者のロールには、リモートストリームを受信する権限のみがあり、ローカルストリームを公開する権限はありません。視聴者がキャスターとマイク接続して双方向通信を行いたい場合、Client.switchRole()を介してロールをanchor
キャスターロールに切り替えた上で、ローカルストリームを公開する必要があります。// 視聴者ロールで入室して視聴します
client
.join({ roomId, role: 'audience' })
.then(() => {
console.log('入室成功');
})
.catch(error => {
console.error('入室失敗 '+ error);
});
client.on('stream-added')
イベントのモニタによって取得され、そのイベントを受信した後は、 Client.subscribe()によってリモートオーディオビデオストリーミングを閲覧します。
説明:Client.join()で入室する前に
client.on('stream-added')
イベントを登録し、リモートユーザーの入室通知を見落とすことがないようにしてください。
client.on('stream-added', event => {
const remoteStream = event.stream;
console.log('リモートストリーミングの増加: ' + remoteStream.getId());
//リモートストリーミングの閲覧
client.subscribe(remoteStream);
});
client.on('stream-subscribed', event => {
const remoteStream = event.stream;
console.log('リモートストリーミングの閲覧成功: ' + remoteStream.getId());
// リモートストリーミングの再生
remoteStream.play('remote_stream-' + remoteStream.getId());
});
client.on('stream-subscribed', event => {
const remoteStream = event.stream;
console.log('リモートストリーミングの閲覧成功: ' + remoteStream.getId());
// リモートストリーミングの再生
remoteStream.play('remote_stream-' + remoteStream.getId());
});
Client.switchRole()を使用して、ロールをanchor
キャスターに切り替えます。
client
.switchRole('anchor')
.then(() => {
// ロールの切り替えに成功しました。現在のロールはキャスターです
})
.catch(error => {
console.error('ロールの切り替えに失敗しました' + error);
});
userId
:ローカルストリーミング所属のユーザーID
audio
:オーディオの起動の有無
video
:ビデオの起動の有無
const localStream = TRTC.createStream({ userId, audio: true, video: true });
localStream
.initialize()
.then(() => {
console.log('ローカルストリーミング初期化の成功');
})
.catch(error => {
console.error('ローカルストリーミング初期化の失敗 ' + error);
});
localStream
.initialize()
.then(() => {
console.log('ローカルストリーミング初期化の成功');
localStream.play('local_stream');
})
.catch(error => {
console.error('ローカルストリーミング初期化の失敗 ' + error);
});
client
.publish(localStream)
.then(() => {
console.log('ローカルストリーミング公開の成功');
})
.catch(error => {
console.error('ローカルストリーミング公開の失敗 ' + error);
});
ライブストリーミング終了時は、Client.leave()メソッドを呼び出してライブストリーミングルームを退出し、すべてのライブストリーミングセッションを終了します。
client
.leave()
.then(() => {
// 退出に成功
})
.catch(error => {
console.error('退室失敗 ' + error);
});
注意:各端末のユースケースappSceneについては、統一する必要があります。統一していない場合、想定外のトラブルが生じる恐れがあります。
この記事はお役に立ちましたか?