Opus WebCodecs 登録

W3C グループノート草案,

この文書の詳細
このバージョン:
https://www.w3.org/TR/2026/DNOTE-webcodecs-opus-codec-registration-20260608/
最新公開バージョン:
https://www.w3.org/TR/webcodecs-opus-codec-registration/
編集者草案:
https://w3c.github.io/webcodecs/opus_codec_registration.html
以前のバージョン:
履歴:
https://www.w3.org/standards/history/webcodecs-opus-codec-registration/
フィードバック:
GitHub
編集者:
Paul Adenot (Mozilla)
Eugene Zemtsov (Google LLC)
以前の編集者:
Bernard Aboba (Microsoft Corporation)
Chris Cunningham (Google LLC)
参加:
Git リポジトリ。
課題を提出する。
バージョン履歴:
https://github.com/w3c/webcodecs/commits

概要

この登録は、[webcodecs-codec-registry]に登録される。 これは Opus について、(1) 完全修飾されたコーデック文字列、(2) コーデック固有のEncodedAudioChunk [[internal data]] バイト、(3) AudioDecoderConfig.description バイト、(4) EncodedAudioChunk [[type]]の値、 および (5) AudioEncoderConfigへのコーデック固有の拡張を記述する。

この登録は、あるコーデック形式が知的財産権の主張によって制約されているかどうかに関する情報を含めることを意図していない。実装者および 著者は、特定のコーデック形式を実装または使用しようとする場合、 この件について適切な法律顧問に相談することが推奨される。WebCodecs の実装者は、 Opus コーデックをサポートする必要はない。

この登録は非規範的である。

この文書のステータス

このセクションは、公開時点におけるこの文書のステータスを説明する。現在の W3C公開物およびこの技術レポートの最新版の一覧は、W3C標準および草案索引にある。

この仕様に関するフィードバックおよびコメントを歓迎する。 この仕様に関する議論には、 GitHub Issuesが推奨される。 あるいは、コメントを Media Working Group のメーリングリスト public-media-wg@w3.orgアーカイブ)へ送ることもできる。 この草案は、ワーキンググループでまだ議論される予定の未解決の課題の一部を示している。 それらの課題が妥当かどうかを含め、その結果についてはまだ決定されていない。

この文書は、Media Working Groupにより、 Note トラックを用いた Group Note Draft として公開された。

Group Note Draft は、 W3Cまたはその会員によって承認されたものではない。

これは草案文書であり、いつでも他の文書によって更新、置換、または廃止される可能性がある。 この文書を進行中の作業以外のものとして引用することは適切ではない。

W3C 特許ポリシーは、この文書に対していかなるライセンス要件またはコミットメントも課さない。

この文書は、2025年8月18日 W3C Process Documentに従う。

1. 完全修飾されたコーデック文字列

コーデック文字列"opus" である。

2. EncodedAudioChunk データ

Opus を含むEncodedAudioChunk は、2つの異なる形式のいずれかであり得る。

ビットストリームがopus 形式である場合、 EncodedAudioChunk は、[OPUS]section 3で説明される Opus パケットでなければならない。

ビットストリームがogg 形式である場合、 EncodedAudioChunk は、[OPUS-IN-OGG]section 3で説明される音声データパケットでなければならない。

3. AudioDecoderConfig description

description は、[OPUS-IN-OGG]の section 5.1 で説明される Identification Header に任意で設定できる。

description が設定されている場合、ビットストリームは ogg 形式であると仮定される。

description が設定されていない場合、ビットストリームは opus 形式であると仮定される。

4. EncodedAudioChunk type

Opus を含むEncodedAudioChunkについて、 [[type]] は常に “key” である。

注: 初期化が成功すると、任意のパケットは いつでもエラーなしで復号できるが、期待される音声出力にならない可能性がある。

5. AudioEncoderConfig 拡張

partial dictionary AudioEncoderConfig {
  OpusEncoderConfig opus;
};

opus, 型は OpusEncoderConfig
Opus コーデックのコーデック固有の構成オプションを含む。

5.1. OpusEncoderConfig

dictionary OpusEncoderConfig {
  OpusBitstreamFormat format = "opus";
  OpusSignal signal = "auto";
  OpusApplication application = "audio";
  [EnforceRange] unsigned long long frameDuration = 20000;
  [EnforceRange] unsigned long complexity;
  [EnforceRange] unsigned long packetlossperc = 0;
  boolean useinbandfec = false;
  boolean usedtx = false;
};

OpusEncoderConfig が妥当かどうかを確認するには、次の手順を実行する:

  1. frameDuration が有効なフレーム継続時間でない場合、 これは[RFC6716]の section 2.1.4 で説明されており、falseを返す。

  2. complexity が指定されており、かつ 0から10までの範囲に含まれない場合、falseを返す。

  3. packetlossperc が指定されており、かつ 0から100までの範囲に含まれない場合、falseを返す。

  4. trueを返す。

format, 型は OpusBitstreamFormat、既定値は "opus"
出力されるEncodedAudioChunkの形式を構成する。 OpusBitstreamFormatを参照。
signal, 型は OpusSignal、既定値は "auto"
符号化される音声信号の種類を指定する。OpusSignalを参照。
application, 型は OpusApplication、既定値は "audio"
エンコーダーの意図された用途を指定する。OpusApplicationを参照。
frameDuration, 型は unsigned long long、既定値は 20000
出力されるEncodedAudioChunkのフレーム継続時間をマイクロ秒単位で構成する。
complexity, 型は unsigned long
[RFC6716]の section 2.1.9. で説明されるように、エンコーダーの計算複雑度を構成する。有効な範囲は 0 から 10までであり、10が最高の 複雑度を表す。値が指定されていない場合、既定値はプラットフォーム固有である: User Agent は、モバイル プラットフォームでは既定値を5に、その他すべてのプラットフォームでは既定値を9に設定するべきである
packetlossperc, 型は unsigned long、既定値は 0
エンコーダーが想定するパケット損失率を構成する。有効な範囲は 0から100までである。

注: パケット損失率はエンコードの過程で 更新される可能性があり、User Agent はこれらの再構成をサポートすることが推奨される。

useinbandfec, 型は boolean、既定値は false
[RFC6716]の section 2.1.7. で説明されるように、エンコーダーが Opus の帯域内前方誤り訂正 (FEC) を提供するかどうかを指定する。
usedtx, 型は boolean、既定値は false
[RFC6716]の section 2.1.9. で説明されるように、エンコーダーが不連続送信 (DTX) を使用するかどうかを指定する。

5.2. OpusBitstreamFormat

enum OpusBitstreamFormat {
  "opus",
  "ogg",
};

OpusBitstreamFormat は、符号化された音声ストリームを復号するために 追加データが必要かどうかを決定する。

opus
符号化された音声ストリームを復号するためにメタデータは不要である。
ogg
符号化された音声ストリームのメタデータは、構成時に AudioDecoderConfig.descriptionを介して提供される。

5.3. OpusSignal

enum OpusSignal {
  "auto",
  "music",
  "voice",
};

OpusSignal は、符号化される信号の種類の既定値を示す。

auto
音声信号は特定の種類として指定されていない。
music
音声信号は音楽である。
voice
音声信号は声または発話である。

5.4. OpusApplication

enum OpusApplication {
  "voip",
  "audio",
  "lowdelay",
};

OpusApplication は、エンコーダーの意図された用途の既定値を示す。

voip
発話の明瞭度を向上させるために信号を処理する。
audio
元の入力への忠実性を優先する。
lowdelay
特定の動作モードを無効にすることで、可能な限り最小の符号化遅延を構成する。

6. プライバシーの考慮事項

[WEBCODECS]プライバシーの 考慮事項セクションを参照。

7. セキュリティの考慮事項

[WEBCODECS]セキュリティの 考慮事項セクションを参照。

適合性

文書の 慣例

適合要件は、 記述的な表明と RFC 2119 用語の組み合わせで表現される。 この文書の規範的部分におけるキーワード “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, および “OPTIONAL” は、RFC 2119 で説明されるとおりに解釈される。 ただし読みやすさのため、 これらの語はこの仕様内で常にすべて大文字で現れるわけではない。

この仕様のすべてのテキストは、明示的に非規範的とされるセクション、例、および注を除き、 規範的である。[RFC2119]

この仕様における例は、“for example” という語で導入されるか、 規範的なテキストから class="example"によって区別される。 次のように示される。

これは情報提供的な例の一例である。

情報提供的な注は “Note” という語で始まり、 規範的なテキストから class="note"によって区別される。 次のように示される。

Note, これは情報提供的な注である。

索引

この 仕様で定義される用語

参照により 定義される用語

参考文献

規範的参考文献

[RFC2119]
S. Bradner. RFC において要件レベルを示すために用いるキーワード. 1997年3月. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBCODECS]
Paul Adenot; Eugene Zemtsov. WebCodecs. 2026年5月5日. WD. URL: https://www.w3.org/TR/webcodecs/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL Standard. Living Standard. URL: https://webidl.spec.whatwg.org/

非規範的参考文献

[OPUS]
RFC 6716: Opus 音声 コーデックの定義. 2012年9月. URL: https://datatracker.ietf.org/doc/html/rfc6716
[OPUS-IN-OGG]
RFC 7845: Opus 音声 コーデックの Ogg カプセル化. 2016年4月. URL: https://datatracker.ietf.org/doc/html/rfc7845
[RFC6716]
JM. Valin; K. Vos; T. Terriberry. Opus 音声 コーデックの定義. 2012年9月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6716
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Eugene Zemtsov. WebCodecs コーデック レジストリ. 2026年2月12日. DRY. URL: https://www.w3.org/TR/webcodecs-codec-registry/

IDL 索引

partial dictionary AudioEncoderConfig {
  OpusEncoderConfig opus;
};


dictionary OpusEncoderConfig {
  OpusBitstreamFormat format = "opus";
  OpusSignal signal = "auto";
  OpusApplication application = "audio";
  [EnforceRange] unsigned long long frameDuration = 20000;
  [EnforceRange] unsigned long complexity;
  [EnforceRange] unsigned long packetlossperc = 0;
  boolean useinbandfec = false;
  boolean usedtx = false;
};


enum OpusBitstreamFormat {
  "opus",
  "ogg",
};


enum OpusSignal {
  "auto",
  "music",
  "voice",
};


enum OpusApplication {
  "voip",
  "audio",
  "lowdelay",
};