マイクやカメラ映像のミュートやアンミュートの実装方法
概要
SkyWay でマイクのミュート/アンミュートのような通信の一時的な停止と再開を実装する際に Publication.enable/disable を使うことができます。
Publication.disable()を実行すると Publication のメディア通信が一時的に停止され、Publication.enable()を実行するとメディア通信が再開されます。
Publication.enable/disable は Publication の subscribe/unsubscribe と違って、停止と再開が接続処理を行うことなく、即時に実行される利点があります。
Publication の停止状況は Publication.state プロパティから参照できます。Publication.state は以下の 3 つの状態を取ります。
- enabled
- 配信中。state が disabled の時に enable()を実行すると state が enabled に変更される
- disabled
- 配信停止中。state が enabled の時に disable()を実行すると state が disabled に変更される
- canceled
- 配信終了。Publication が Unpublish されると state が canceled に変更される。
制限
Remote の Publication を disable することは可能ですが、enable することはできません。
具体的なユースケースで例えると、話している相手を強制的にミュートさせることはできますが、ミュート中の相手を強制的にアンミュートさせることはできません。
SkyWayAuthToken の設定
Publication.enable/disable の権限は SkyWayAuthToken で設定できます。
disable
write か disable のいずれかの Action が設定されていれば利用できます。
scope.app.channels[].members[].publication.actions["write","disable"]
enable
write か enable のいずれかの Action が設定されていれば利用できます。
scope.app.channels[].members[].publication.actions["write","enable"]
サンプルコード
JavaScript SDK の Room ライブラリによるサンプルコードを以下に示します。
const localVideoStream = await SkyWayStreamFactory.createCameraVideoStream(); const publication = await localMember.publish(localVideoStream); // カメラ映像の配信を一時的に停止する await publication.disable(); // カメラ映像の配信を再開する await publication.enable();