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 저장소.
이슈 제출.
버전 기록:
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에서 노트 트랙을 사용하여 그룹 노트 초안으로 게시했습니다.

그룹 노트 초안은 W3C 또는 그 회원의 승인을 받은 것이 아닙니다.

이 문서는 초안 문서이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 적절하지 않습니다.

W3C 특허 정책은 이 문서에 대해 어떠한 라이선스 요구 사항이나 약속도 부과하지 않습니다.

이 문서는 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절에 정의된 액세스 단위일 것으로 예상됩니다.

참고: 액세스 단위는 정확히 하나의 기본 부호화 픽처를 포함합니다.

비트스트림이 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이 있으면, 이는 [iso14496-15] 5.3.3.1절에 정의된 AVCDecoderConfigurationRecord라고 가정되며, 비트스트림은 avc 형식이라고 가정됩니다.

참고: 이 형식은 일반적으로 .MP4 파일에서 사용되며, 이 경우 플레이어는 보통 미디어 데이터에 임의 접근할 수 있습니다.

description이 없으면, 비트스트림은 annexb 형식이라고 가정됩니다.

참고: "annexb" 형식은 [ITU-T-REC-H.264] Annex B에 더 자세히 설명되어 있습니다. 이 형식은 실시간 스트리밍 애플리케이션에서 흔히 사용되며, SPS 및 PPS 데이터를 주기적으로 포함하면 사용자가 스트림 중간부터 쉽게 시작할 수 있습니다.

4. EncodedVideoChunk 타입

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]

이 명세의 예제는 “예를 들어”라는 말로 도입되거나 규범적 텍스트와 구분되어 class="example"로 표시됩니다. 다음과 같습니다.

이는 정보 제공용 예제의 예입니다.

정보 제공용 참고는 “참고”라는 말로 시작하며 규범적 텍스트와 구분되어 class="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;
};