WebRTC で音声に利用されるコーデックは Opus がほとんどです。Opus は良いところばかりなのですが、より細かくパラメーターを設定したいという要望があったりします。
また最近ではマルチチャンネル対応の multiopus というのにも対応しています。これは STADIA 向けに搭載されている WebRTC の Opus で 5.1 / 7.1 を実現する仕組みです。
パラメータの種類
- clock_rate
- channels
- maxplaybackrate
- stereo
- sprop_stereo
- minptime
- ptime
- useinbandfec
- usedtx
clock_rate が最近になって変更が可能になりました。Opus では clock_rate が 48kHz 固定だったのですが、最近になって 16kHz に下げられたりするようになりました。8kHz から 48kHz の間で設定可能になっています。
SDP だと以下のような感じになります。16kHz で 1 チャンネル、つまりモノラルですね。
a=rtpmap:109 opus/16000/1
ちなみに channels は multiopus で 4 や 6 や 8 といった値が指定可能です。後の細かい値は省略します。multiopus 向けの設定もあります。
- channel_mapping
- num_streams
- coupled_streams
WebRTC SFU Sora での指定
WebRTC SFU Sora の次のリリースでは opus と multiopus を指定した際、これらのパラメータ設定をシグナリング時や認証成功時指定可能になります。
WebRTC は様々な環境で利用されることから、細かいチューニングが必要になる場合があります。その時に設定ができることが重要です。
指定方法としては audio で Opus のパラメータを設定可能になります。
{"audio": {
"codec_type": "OPUS",
"opus_params": {
"channels": 1,
"clock_rate": 32000,
"stereo": false,
"sprop_stereo": false,
"useinbandfec": false,
"usedtx": false}}}
まとめ
- 映像は再送可能だが音声は再送しないのでパラメータ指定重要
- 設定ができることが重要、不要であればデフォルトでよい
WebRTC SFU Sora は libwebrtc の提供する機能にできるだけ対応し、利用可にしていきます。