WebRTC の Opus パラメータ

V
shiguredo
Published in
3 min readJun 14, 2019

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 の提供する機能にできるだけ対応し、利用可にしていきます。

--

--