Opus WebCodecs 登録

W3C グループ草案ノート,

この文書についての詳細
このバージョン:
https://www.w3.org/TR/2025/DNOTE-webcodecs-opus-codec-registration-20250514/
最新公開バージョン:
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 Inc.)
参加:
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 標準および草案索引( https://www.w3.org/TR/)で確認できる。

この仕様に対するフィードバックおよびコメントを歓迎する。GitHub Issues が、この仕様に関する議論には推奨される。 代替として、Media Working Group のメーリングリストである public-media-wg@w3.orgアーカイブ)にコメントを送ることもできる。 この草案では、作業グループ内でまだ議論されるべき保留中の課題の一部を強調表示している。 これらの課題の結果については、それらが有効かどうかを含め、いかなる決定も行われていない。

この文書は、Media Working Group によって、 Note track を用いたグループ草案ノートとして公開された。

グループ草案ノートは、 W3C またはそのメンバーによって支持されていない。

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

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

この文書は、2023年11月03日 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節で説明される 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] の第2.1.4節で説明されるが、false を返す。

  2. complexity が指定されており、0 から 10 までの範囲(両端を含む)内でない場合、 false を返す。

  3. packetlossperc が指定されており、0 から 100 までの範囲(両端を含む)内でない場合、 false を返す。

  4. true を返す。

format, 型は OpusBitstreamFormat、既定値は "opus"
出力 EncodedAudioChunks の形式を構成する。 OpusBitstreamFormat を参照。
signal, 型は OpusSignal、既定値は "auto"
エンコードされる音声信号の型を指定する。OpusSignal を参照。
application, 型は OpusApplication、既定値は "audio"
エンコーダーが意図する用途を指定する。OpusApplication を参照。
frameDuration, 型は unsigned long long、既定値は 20000
出力 EncodedAudioChunks のフレーム継続時間をマイクロ秒単位で構成する。
complexity, 型は unsigned long
[RFC6716] の第2.1.9節で説明されるように、エンコーダーの計算複雑度を構成する。 有効な範囲は 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節で説明されるように、エンコーダーが Discontinuous Transmission (DTX) を使用するかどうかを指定する。

5.2. OpusBitstreamFormat

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

OpusBitstreamFormat は、符号化された音声ストリームをデコードするために extra-data が必要かどうかを決定する。

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. Key words for use in RFCs to Indicate Requirement Levels. 1997年3月. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBCODECS]
Paul Adenot; Eugene Zemtsov. WebCodecs. 2025年5月14日. 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: Definition of the Opus Audio Codec. 2012年9月. URL: https://datatracker.ietf.org/doc/html/rfc6716
[OPUS-IN-OGG]
RFC 7845: Ogg Encapsulation for the Opus Audio Codec. 2016年4月. URL: https://datatracker.ietf.org/doc/html/rfc7845
[RFC6716]
JM. Valin; K. Vos; T. Terriberry. Definition of the Opus Audio Codec. 2012年9月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6716
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Bernard Aboba. WebCodecs コーデック レジストリ. 2024年9月9日. 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",
};