開発者ドキュメントユーザーガイドTipsマイクやカメラ映像のミュートやアンミュートの実装方法

マイクやカメラ映像のミュートやアンミュートの実装方法

概要

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();