WebRTC M83 リリースノートメモ

サービス開発統括本部のイチノです。攻殻機動隊 SAC_2045 を見ました! 今回は、2020年4月23日に公開された WebRTC M83 リリースノート について、私なりの解釈を交えたメモです。 WebRTC M83 は、2020年5月19日リリース予定 *1 の Chrome M83 に搭載されます。

アナウンス

DTLS 1.0 除去するためのテスト用フラグを追加

Chrome M83 に --force-fieldtrials="WebRTC-LegacyTlsProtocols/Disabled/" フラグが追加されました。 このフラグは、 DTLS 1.0, TLS 1.0, TLS 1.1 を拒否するフラグです。 Chrome M84 でこのフラグが Disabled に既定値変更されます。

DTLS 1.2 または、 TLS 1.2 に対応していない WebRTC スタックと通信する場合は影響があります。WebRTC スタックの状況については、以下のリンクが参考になります。

Chrome M74 で WebRTC では DTLS 1.2 が必須になる (M81 まで引き伸ばされました)

libwebrtc については、 WebRTC M47 以上で DTLS 1.2 を段階的にサポートしています。

参考

ice-ufrag and ice-pwd syntax

SDP の ice-ufrag と ice-pwd が SDP の ICE 文法 に準拠した結果、アルファベット、数字、 /+ 以外を不正なSDPとして受け付けなくなります。不正な SDP と判断されると RTCPeerConnection.setRemoteDescription で失敗します。

参考

機能

Insertable Streams の試み(Insertable Streams Origin Trial)

Insertable Streams は、データフローにカスタム処理を追加できる機能です。 end-to-end 暗号をサポートすること狙っているそうです。

参考

RTCPeerConnection.canTrickleIceCandidates

RTCPeerConnection.canTrickleIceCandidates で相手ピアがトリクル ICE に対応しているか判断できるようになります。 RTCPeerConnection.setRemoteDescription が呼ばれた後にしか判断できないことに注意してください。

RTCRtpEncodingParameters.maxFramerate

ビデオのフレームレートを制限できます。RTCRtpSender.setParameters を通して、設定できます。 0 を設定すると、次のフレームは停止します。 RTCRtpSender.getParameters で使用中の RTCRtpEncodingParameters.maxFramerate を取れるようです。

RTCRtpSendParameters.degradationPreference

帯域制限やCPUの制約により、設定したフレームレートと解像度でエンコードが妨げられたときに、どのように質を下げるかを制御するためのパラメータ RTCRtpSendParameters.degradationPreference が加わりました。 画面共有アプリだったらフレームレートが落ちてもいいから画質を維持したい場合や、ビデオ会議だったら解像度よりも滑らかさを維持したい場合に役立つパラメーター。

機能とバグ改修

すべてを列挙しませんが、個人的に気になったのものだけ記載しています。

  • 11325 opus 1.3 アップグレード。 Opus 1.3 Released の Sample で 9kb/s の Opus 1.2 と Opus 1.3 を聴き比べると違いが分かります。

  • 1029737 エンコーダ対応コーデックが RTCRtpReceiver.getCapabilities() で返却されていたのが解消されました。

*1:Chrome M83は、Chromeのリリーススケジュール によると執筆時点で、2020年5月19日リリース予定。