JavaScript SDK
既知の問題
Bluetooth イヤホンを利用している際に Audio を扱う Publication の Disable/Enable を行うと再生中の音声が一瞬途切れる
SDK では Publication の Disable をする際に Stream と紐付いているメディアデバイスを解放し、Enable する際にメディアデバイスを再取得します。 これにより Publication を Disable している間は、PC のカメラインジゲータやマイクインジゲータを消灯することが出来ます。
Bluetooth イヤホンを利用している環境では音声デバイスの取得/解放時に Bluetooth イヤホン上の音声が途切れる場合があります。
この音声の途切れが許容できない場合は、SkyWayStreamFactory で LocalAudioStream を作成する際に次のオプションを指定してください。 ただし、このオプションを指定すると Publication の Disable 時にメディアデバイスの解放処理が行われなくなるのでご注意ください。
await SkyWayStreamFactory.createMicrophoneAudioStream({ stopTrackWhenDisabled: false });
iOS Safari でブラウザのウィンドウやタブを閉じたとき、またはページを更新したとき Member が Room (Channel) から leave しない
SDK ではブラウザのウィンドウやタブを閉じたとき、またはページを更新したときに beforeunload イベント を検知して Member を自動的に leave させます。しかし、iOS Safari は beforeunload イベントに対応していないため、これによる Member の leave が行われません。
代替手段として、MemberKeepAliveConfig の keepaliveIntervalSec(デフォルト値 30)と keepaliveIntervalGapSec(デフォルト値 30)を適切な値に設定することで Member が自動的に leave するタイミングをある程度コントロールすることができます。
Member の生存確認は keepaliveIntervalSec 秒ごとにクライアントからサーバーへの応答の有無で行われており、keepaliveIntervalSec 秒応答がないまま keepaliveIntervalGapSec 秒経過した場合 Member の leave が行われます。
そのため、例えば keepaliveIntervalSec を 30 秒、keepaliveIntervalGapSec を 5 秒とすることで、ブラウザのウィンドウを閉じたとき最短で 5 秒後、最長で 35 秒後に Member を自動的に leave させることができます。
Room ライブラリの場合
const context = await SkyWayContext.Create(token); const room = await SkyWayRoom.FindOrCreate(context, { type: 'p2p', name: 'sample-room', }); const me = await room.join({ keepaliveIntervalSec: 30, keepaliveIntervalGapSec: 5, });
Core ライブラリの場合
const context = await SkyWayContext.Create(token); const channel = await SkyWayChannel.FindOrCreate(context, { name: 'sample-channel', }); const me = await channel.join({ keepaliveIntervalSec: 30, keepaliveIntervalGapSec: 5, });
Firefox で SFU を経由して iOS/Android からの映像を受信したとき、Firefox 上で 90 度回転した映像が表示される
Firefox では映像の角度を知らせる RTP 拡張 3gpp:video-orientation
をサポートしていないことが原因です。そのため、現在ユーザー側で取れる解決策はありません。
なお、本事象については2024年度内での修正を予定しています。