Opus WebCodecs 登録

W3C グループノート草案,

この文書の詳細
このバージョン:
https://www.w3.org/TR/2026/DNOTE-webcodecs-opus-codec-registration-20260924/
最新公開バージョン:
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 は、第 3 節の [OPUS] で説明されている Opus パケットでなければなりません。

ビットストリームが ogg 形式の場合、 EncodedAudioChunk は、第 3 節の [OPUS-IN-OGG] で説明されている音声データパケットでなければなりません。

3. AudioDecoderConfig の description

description は、[OPUS-IN-OGG] の第 5.1 節で説明されている識別 ヘッダーに任意で設定できます。

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

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

4. EncodedAudioChunk の型

Opus を含む EncodedAudioChunk の [[type]] は常に「key」です。

注: 初期化が成功すると、どのパケットも エラーなしでいつでも デコードできますが、期待される音声出力が得られない場合があります。

5. プライミングサンプル

識別ヘッダーの Pre-skip フィールド([OPUS-IN-OGG] の第 5.1 節を参照)が description に存在する場合、AudioDecoder の [[priming samples to discard]] 内部スロットの初期値を指定します。description が存在しない場合、[[priming samples to discard]] は 0 に初期化されます。デコードされた EncodedAudioChunk は追加の破棄情報を伝達しません。

6. AudioEncoderConfig の拡張

partial dictionary AudioEncoderConfig {
  OpusEncoderConfig opus;
};

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

6.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] の第 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
第 2.1.9 節で説明されているように、エンコーダーの計算複雑度を構成します。 [RFC6716]。有効な範囲は 0 から 10 までで、10 は最も高い 複雑度を表します。値が指定されていない場合、デフォルト値はプラットフォーム固有です: ユーザーエージェントは、モバイル プラットフォームではデフォルトを 5 に、それ以外のすべてのプラットフォームではデフォルトを 9 に設定することが SHOULD です。
packetlossperc, 型は unsigned long、デフォルトは 0
エンコーダーが予期するパケット損失率を構成します。有効な範囲は 0 から 100 です。

注: パケット損失率は エンコードの途中で更新される場合があり、 ユーザーエージェントはこれらの再構成をサポートすることが推奨されます。

useinbandfec, 型は boolean、デフォルトは false
[RFC6716] の第 2.1.7 節で説明されているように、エンコーダーが Opus のインバンド前方誤り訂正 (FEC) を提供するかどうかを指定します。
usedtx, 型は boolean、デフォルトは false
[RFC6716] の第 2.1.9 節で説明されているように、エンコーダーが不連続送信 (DTX) を使用するかどうかを指定します。

6.2. OpusBitstreamFormat

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

OpusBitstreamFormat は、エンコードされた音声ストリームをデコードするために追加データが 必要かどうかを決定します。

opus
エンコードされた音声ストリームをデコードするためにメタデータは必要ありません。
ogg
エンコードされた音声ストリームのメタデータは、構成時に AudioDecoderConfig.description を介して提供されます。

6.3. OpusSignal

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

OpusSignal は、エンコードされる信号の種類のデフォルト値を示します。

auto
音声信号が特定の種類であることは指定されません。
music
音声信号は音楽です。
voice
音声信号は声または発話です。

6.4. OpusApplication

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

OpusApplication は、エンコーダーが意図する 用途のデフォルト値を示します。

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

7. プライバシーに関する考慮事項

[WEBCODECS] の プライバシーに関する 考慮事項の節を参照してください。

8. セキュリティに関する考慮事項

[WEBCODECS] の セキュリティに関する 考慮事項の節を参照してください。

適合性

文書の 規約

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

この仕様のすべてのテキストは規範的です。 ただし、非規範的であると明示された節、例、および注記を除きます。 [RFC2119]

この仕様の例は、「たとえば」という語で導入されるか、 規範的なテキストから class="example" によって分離されます。 次のようになります:

これは参考情報としての例です。

参考情報としての注記は「注」という語で始まり、 規範的なテキストから class="note" によって分離されます。 次のようになります:

注:これは参考情報としての注記です。

索引

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

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

参考文献

規範的参考文献

[RFC2119]
S. Bradner. RFC で 要件レベルを示すために使用するキーワード. 1997年3月. 現行の最良の慣行. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBCODECS]
Paul Adenot; Eugene Zemtsov. WebCodecs. 2026年7月8日. WD. URL: https://www.w3.org/TR/webcodecs/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 標準. 現行 標準. 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月. 標準化提案. URL: https://www.rfc-editor.org/info/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",
};