見出し画像

WebRTC最新情報 #3 ~libwebrtc M91リリース、WWDC21など~

こんにちは、SkyWay TechSol(テクニカルソリューション)チームのmonmeeです。

WebRTC最新情報マガジンでは、WebRTC業界の最新情報やブラウザのWebRTC実装状況について定期的に皆様にお届けします。主な調査元サイトは以下です。

WebRTC Discuss: WebRTC全般についての議論が行われるGoogle Groupです。
Chromium bugs: Chromiumブラウザに関する不具合情報が集約するサイトです。
Bugzilla: Firefoxブラウザに関する不具合情報が集約するサイトです。
Safari Webkit Bugs: Safariブラウザに関する不具合情報が集約するサイトです。
BlogGeek.me: testRTCの創業者Tsahi氏が運営するWebRTC情報サイトです。
WebRTC Weekly: Tsahi氏が運営するWebRTC関連ニュースをまとめたサイトです。
webrtcHacks: WebRTC愛好家が運営するWebRTC開発者向けブログです。
rtcsec: リアルタイム通信(特にSIP、VoIP、WebRTC)のセキュリティに特化して言及するブログです。

【免責事項】 
本調査は素早く幅広い調査を目的としており、本記事にて提供する情報の正確性・妥当性につきましてはその保証をするものではありません。ご意見があれば以下までお問い合わせください。
https://support.skyway.io/hc/ja/requests/new

------------

[libwebrtc] M91リリース

5/25にlibwebrtc M91がリリースされました。主な変更点は以下です。

1. RTP datachannelsの完全削除

M88よりDeprecated、M90より無効化されたRTP datachannelsがM91より完全削除されました。
SCTP datachannelsは当然残ります。

この変更によるSkyWayのご利用への影響はありません。

2. 1024未満のポート(443除く)でTURNと接続できなくなる

WebRTC最新情報 #1 でも取り上げましたが、NAT Slip Streaming攻撃の対策として、443以外の1024未満のポートでTURNと接続できなくなります。

この変更によるSkyWayのご利用への影響はありません。

3. SDPで帯域幅の制限("b=AS:80\r\n") をすると映像の遅延が1.5sになるバグが解消

SDP上で帯域幅制限を行い通話した場合、映像遅延が発生するというバグが解消されました。

[Event] WWDC21

2021/06/07にWWDC21が開催されました。

iOS/iPadOS 15、macOS「Monterey」などの発表が大々的に行われましたが、ここではWebRTCが関連しそうな話題を1つピックアップします。

FacetimeとSharePlay

AppleがFacetime周辺の開発にかなり力を入れています。

Facetime link

今まではMacとiOSからFacetimeを使えませんでしたが、今後はWebからもFacetimeが使えるようになります。

これにより、非AppleデバイスでもFacetimeのURLをクリックすることで、Webブラウザ経由でFacetimeを利用可能になります。

ブラウザで使えるということは、FacetimeがWebRTC互換になったのではないかと想定されます。

Spatial audio(空間オーディオ)

iOS 15よりFacetimeはSpatial audio(空間オーディオ)に対応するようです。

これにより、例えばFacetimeで複数人ビデオ通話時に、Facetime画面上の左側に映っている話者の音声は左から聞こえる、といった体験を得られるようになります。

Voice isolation mode/ Wide spectrum mode

音声と環境音を分離してノイズキャンセリングを行うVoice isolation modeと、ノイズキャンセリングを無効化して周辺の音声も届けるWide spectrum modeが選択できるようになります。

Voice isolation modeは自分の声以外のノイズを分離するため、車通りの多い歩道やカフェなど、ノイジーな環境での通話で効果を発揮しそうです。

一方、Wide spectrum modeは、周囲の環境音を積極的に拾います。一部屋に複数人が存在する環境での通話などに適しそうです。

SharePlay

Facetimeの共有体験を向上させるための新しいAPIがSharePlayです。

SharePlayに映像や音声を取り込むことで、Facetimeを繋いだ相手と映像や音楽を一緒に鑑賞したりできるようになります。
Apple MusicとApple TV Plusはもちろん、Disney PlusやHulu、HBO Max、Twitchなどのサービスとの連携予定のようです。

[Safari] iOS 15からCanvas.captureStreamが使えるようになる

「iOS 15でCanvas.captureStreamが使えるようになった」という内容がWebkit Bugzillaに報告されていました。

2018年から現在までiOS SafariではCanvas.captureStreamが動きませんでしたが、今後は動くようになる可能性があります。
これにより、iOS Safariでもcanvas上に映像ストリームを描画したり、Canvas APIを使って解像度やフレームレートの調整などができるようになると想定されます。

Canvas APIの利用方法については私がQiitaに記事を書いていますので是非ご参照ください。

[libwebrtc] SCTPの書き換えが進行中

セキュリティの向上や機能拡張性の向上を目的として、既存のusersctpからdcSCTPと呼ばれる新しいSCTPに実装を書き換える動きが進行しています。

M92より、フィールドトライアルでdcSCTPを使うような設定を試すことが可能になっています。
正式リリース次期については未発表ですが、今年後半にusersctpから移行することを目標としているようです。

直近でSkyWayに対する影響はありません。
後方互換性は保たれる(仮に保たれないとしても移行猶予は設定される)と想定していますが、引き続き今後の動きをチェックしていきます。

[libwebrtc] Android 9で20以上のストリームをHWエンコードするとエラーになる

元々、AndroidやiOSでは、HWアクセラレーションには最大32(デバイス固有)などの制限があります。
ただ、Android 9に限っては、20以上のストリーム数をHWエンコードになるとエラーになるバグが存在するという報告です。
Android 9以前/以降のバージョンではこの事象は確認されていないようです。

SkyWayをご利用の場合、Android 9デバイスからMeshRoomで20人以上にストリームを送る際に本事象の影響があります。
ただ、端末負荷の観点でもかなり稀なケースと考えられます。
大人数へストリームを送信する場合にはSFURoomをお使いください。

[Reading] Audio Redundancy(音声の冗長化)

音声の冗長化を行い、パケットロスの影響を抑える技術であるRED(Redundant Audio Data)の仕組みをJanusで利用する、という記事です。

REDとは、後続のパケットの中に冗長パケットを入れて送信することで、パケットが損失した際にも回復できる可能性を高める技術です。

REDの仕組みはフィールドトライアルとして提供しています。

--force-fieldtrials=WebRTC-Audio-Red-For-Opus/Enabled/ オプションを付けてChromeを起動することによりChrome上でREDを使えるようになります。

SDPを以下のように書き換えることで、最初のOpusパケットの後はREDパケットが送られるようになります。

m=audio 9 UDP/TLS/RTP/SAVPF 96 111
a=rtpmap:96 red/48000/2
a=rtpmap:111 opus/48000/2

------------

最後までお読みいただきありがとうございました。
今後もWebRTCに関する最新情報をお届けしていくので、お楽しみに!

▼SkyWayサービスサイトはこちら▼
https://webrtc.ecl.ntt.com/

この記事が気に入ったらサポートをしてみませんか?