AVC (H.264) WebCodecs 登録

W3C グループノート草案,

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

概要

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

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

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

この文書の位置付け

この節は、公開時点におけるこの文書の位置付けを説明する。現在の W3C 公開文書の一覧およびこの 技術報告書の最新改訂版は、W3C 標準および草案索引で確認できる。

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

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

Group Note Draft は、 W3C またはそのメンバーによって承認されたものではない。

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

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

この文書は、2025年8月18日 W3C Process Document に準拠する。

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

コーデック文字列は接頭辞 "avc1." または "avc3." で始まり、それぞれ [rfc6381] の第3.4節および [iso14496-15] の第5.4.1節で説明される 6文字の接尾辞が続く。

2. EncodedVideoChunk データ

EncodedVideoChunk [[internal data]] は、[ITU-T-REC-H.264] の第7.4.1.2節で定義される アクセスユニットであることが期待される。

注: アクセスユニットは、ちょうど1つのプライマリ符号化 ピクチャを含む。

ビットストリームが avc 形式の場合、 [[internal data]] は、[iso14496-15] の第5.3.2節で定義される標準形式であると見なされる。

ビットストリームが annexb 形式の場合、 [[internal data]] は、[ITU-T-REC-H.264] Annex B で定義される Annex B 形式であると見なされる。

注: [[internal data]] は本質的にバイト境界に揃っているため、 実装はバイト境界の復元を要求されない。

3. VideoDecoderConfig description

description が存在する場合、それは [iso14496-15] の 第5.3.3.1節で定義される AVCDecoderConfigurationRecord であると見なされ、ビットストリームは avc 形式であると見なされる。

注: この形式は .MP4 ファイルで一般的に使用され、そこでは プレーヤーは通常、 メディアデータにランダムアクセスできる。

description が存在しない場合、ビットストリームは annexb 形式であると見なされる。

注: "annexb" 形式は、 [ITU-T-REC-H.264] の Annex B でより詳しく説明されている。この形式はライブストリーミングアプリケーションで一般的に使用され、 SPS および PPS データを定期的に含めることで、ユーザーがストリームの途中から 容易に開始できるようにする。

4. EncodedVideoChunk type

EncodedVideoChunk[[type]]key であり、ビットストリームが avc 形式である場合、その EncodedVideoChunk は、瞬時復号更新(IDR)ピクチャであるプライマリ符号化ピクチャを 含むことが期待される。

注: ビットストリームが avc 形式である場合、復号に必要なパラメータセットは VideoDecoderConfig.description に含まれる。

EncodedVideoChunk[[type]]key であり、ビットストリームが annexb 形式である場合、その EncodedVideoChunk は、瞬時復号更新(IDR)ピクチャであるプライマリ符号化ピクチャと、 その EncodedVideoChunk 内のすべてのビデオデータ NAL ユニットを復号するために必要なすべてのパラメータセットの両方を含むことが期待される。

5. VideoEncoderConfig 拡張

partial dictionary VideoEncoderConfig {
  AvcEncoderConfig avc;
};

avc, 型は AvcEncoderConfig
AVC (H.264) コーデック用のコーデック固有の構成オプションを含む。

5.1. AvcEncoderConfig

dictionary AvcEncoderConfig {
  AvcBitstreamFormat format = "avc";
};

format, 型は AvcBitstreamFormat、既定値は "avc"
出力 EncodedVideoChunk の形式を構成する。 AvcBitstreamFormat を参照。

5.2. AvcBitstreamFormat

enum AvcBitstreamFormat {
  "annexb",
  "avc",
};

AvcBitstreamFormat は、AVC パラメータセットの場所、および ビットストリームをパッケージ化する仕組みを決定する。

annexb
SPS および PPS データは、ビットストリーム全体にわたって定期的に含まれる。

注: この形式は [ITU-T-REC-H.264] の Annex B でより詳しく説明されている。この形式はライブストリーミングアプリケーションで一般的に使用され、 SPS および PPS データを定期的に含めることで、ユーザーがストリームの途中から 容易に開始できるようにする。

avc
SPS および PPS データはビットストリームに含まれず、代わりに [[output callback]] を通じて VideoDecoderConfig.description として、つまり EncodedVideoChunkMetadata.decoderConfig のものとして出力される。

注: この形式は [iso14496-15] の第5.3節でより詳しく説明されている。この形式は .MP4 ファイルで一般的に使用され、そこでは プレーヤーは通常メディアデータにランダムアクセスできる。

6. VideoEncoderEncodeOptions 拡張

partial dictionary VideoEncoderEncodeOptions {
  VideoEncoderEncodeOptionsForAvc avc;
};

avc, 型は VideoEncoderEncodeOptionsForAvc
[ITU-T-REC-H.264] コーデック用のコーデック固有のエンコードオプションを含む。

6.1. VideoEncoderEncodeOptionsForAvc

dictionary VideoEncoderEncodeOptionsForAvc {
  unsigned short? quantizer;
};

quantizer, 型は unsigned short、nullable
フレームごとの量子化値を設定する。 [ITU-T-REC-H.264] では、 量子化しきい値は 0 から 51 まで変化させることができる。

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

プライバシーに関する 考慮事項の節([WEBCODECS])を参照されたい。

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

セキュリティに関する 考慮事項の節([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/

非規範的参照文献

[ISO14496-15]
ISO/IEC 14496-15:2024 情報技術 — 音響映像オブジェクトの符号化 — 第15部: ISO 基本メディアファイル形式における ネットワーク抽象化層(NAL)ユニット構造化ビデオの搬送. 2024年10月. URL: https://www.iso.org/standard/89118.html
[ITU-T-REC-H.264]
H.264 : 汎用視聴覚サービスのための高度ビデオ符号化. 2019年6月. URL: https://www.itu.int/rec/T-REC-H.264
[RFC6381]
R. Gellens; D. Singer; P. Frojdh. "Bucket" メディア型の 'Codecs' および 'Profiles' パラメータ. 2011年8月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6381
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Eugene Zemtsov. WebCodecs コーデック レジストリ. 2026年2月12日. DRY. URL: https://www.w3.org/TR/webcodecs-codec-registry/

IDL 索引

partial dictionary VideoEncoderConfig {
  AvcEncoderConfig avc;
};


dictionary AvcEncoderConfig {
  AvcBitstreamFormat format = "avc";
};


enum AvcBitstreamFormat {
  "annexb",
  "avc",
};


partial dictionary VideoEncoderEncodeOptions {
  VideoEncoderEncodeOptionsForAvc avc;
};


dictionary VideoEncoderEncodeOptionsForAvc {
  unsigned short? quantizer;
};