HEVC (H.265) WebCodecs 등록

W3C 그룹 노트 초안,

이 문서에 대한 자세한 정보
이번 버전:
https://www.w3.org/TR/2026/DNOTE-webcodecs-hevc-codec-registration-20260608/
최신 공개 버전:
https://www.w3.org/TR/webcodecs-hevc-codec-registration/
편집자 초안:
https://w3c.github.io/webcodecs/hevc_codec_registration.html
이전 버전:
이력:
https://www.w3.org/standards/history/webcodecs-hevc-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]에 들어간다. 이는 HEVC (H.265)에 대해 (1) 완전한 코덱 문자열, (2) 코덱별 EncodedVideoChunk [[internal data]] 바이트, (3) VideoDecoderConfig.description 바이트, (4) EncodedVideoChunk [[type]]의 값, 그리고 (5) VideoEncoderConfig에 대한 코덱별 확장을 설명한다.

이 등록은 코덱 형식이 지식재산권 청구에 의해 제한되는지 여부에 관한 정보를 포함하려는 것이 아니다. 구현자와 작성자는 특정 코덱 형식을 구현하거나 사용하려는 경우 이 문제에 대해 적절한 법률 자문을 구하는 것이 권장된다. WebCodecs 구현은 HEVC / H.265 코덱을 지원할 필요가 없다.

이 등록은 비규범적이다.

이 문서의 상태

이 절은 발행 시점의 이 문서의 상태를 설명한다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정본은 W3C 표준 및 초안 색인에서 찾을 수 있다.

이 명세에 대한 피드백과 의견을 환영한다. 이 명세에 관한 논의에는 GitHub Issues를 사용하는 것이 좋다. 또는 Media Working Group의 메일링 리스트인 public-media-wg@w3.org (아카이브)로 의견을 보낼 수 있다. 이 초안은 작업 그룹에서 아직 논의되어야 할 일부 보류 중인 이슈를 강조한다. 이러한 이슈의 유효성 여부를 포함하여, 그 결과에 대한 어떤 결정도 내려지지 않았다.

이 문서는 Media Working GroupNote 트랙을 사용하여 Group Note Draft로 발행했다.

Group Note Draft는 W3C나 그 회원의 승인을 받은 것이 아니다.

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

W3C Patent Policy는 이 문서에 대해 어떤 라이선스 요구사항이나 약속도 부과하지 않는다.

이 문서는 2025년 8월 18일 W3C Process Document의 적용을 받는다.

1. 완전한 코덱 문자열

코덱 문자열은 "hev1." 또는 "hvc1." 접두사로 시작하며, [iso14496-15]의 E.3절에 설명된 네 개의 점으로 구분된 필드로 된 접미사를 가진다.

2. EncodedVideoChunk 데이터

EncodedVideoChunk [[internal data]][ITU-T-REC-H.265] 7.4.2.4절에서 정의한 access unit일 것으로 예상된다.

참고: access unit은 정확히 하나의 base layer coded picture를 포함한다.

비트스트림이 hevc 형식인 경우, [[internal data]][iso14496-15] 8.3.2절에 정의된 canonical format에 있다고 가정한다.

비트스트림이 annexb 형식인 경우, [[internal data]][ITU-T-REC-H.265] Annex B에 정의된 Annex B 형식에 있다고 가정한다.

참고: [[internal data]]는 본질적으로 바이트 정렬되어 있으므로, 구현은 바이트 정렬을 복구할 필요가 없다.

3. VideoDecoderConfig description

description이 존재하는 경우, 이는 [iso14496-15] 8.3.3.1절에서 정의한 HEVCDecoderConfigurationRecord라고 가정하며, 비트스트림은 hevc 형식에 있다고 가정한다.

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

description이 존재하지 않는 경우, 비트스트림은 annexb 형식에 있다고 가정한다.

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

4. EncodedVideoChunk type

EncodedVideoChunk[[type]]key이고, 비트스트림이 hevc 형식인 경우, 그 EncodedVideoChunk는 instantaneous decoding refresh (IDR), clean random access (CRA) 또는 broken link access (BLA) picture인 base layer primary coded picture를 포함할 것으로 예상된다.

참고: 비트스트림이 hevc 형식인 경우, 디코딩에 필요한 parameter set은 VideoDecoderConfig.description에 포함된다.

EncodedVideoChunk[[type]]key이고, 비트스트림이 annexb 형식인 경우, 그 EncodedVideoChunk는 instantaneous decoding refresh (IDR), clean random access (CRA) 또는 broken link access (BLA) picture인 base layer coded picture와, 그 EncodedVideoChunk 안의 모든 video data NAL unit을 디코딩하는 데 필요한 모든 parameter set을 모두 포함할 것으로 예상된다.

5. VideoEncoderConfig 확장

partial dictionary VideoEncoderConfig {
  HevcEncoderConfig hevc;
};

hevc, 타입 HevcEncoderConfig
HEVC (H.265) 코덱에 대한 코덱별 구성 옵션을 포함한다.

5.1. HevcEncoderConfig

dictionary HevcEncoderConfig {
  HevcBitstreamFormat format = "hevc";
};

format, 타입 HevcBitstreamFormat, 기본값은 "hevc"
출력 EncodedVideoChunk들의 형식을 구성한다. HevcBitstreamFormat을 보라.

5.2. HevcBitstreamFormat

enum HevcBitstreamFormat {
  "annexb",
  "hevc",
};

HevcBitstreamFormat은 HEVC parameter set의 위치와 비트스트림을 패키징하는 메커니즘을 결정한다.

annexb
Parameter set은 비트스트림 전반에 주기적으로 포함된다.

참고: 이 형식은 [ITU-T-REC-H.265], Annex B에서 더 자세히 설명된다. 이 형식은 라이브 스트리밍 애플리케이션에서 흔히 사용되며, parameter set 데이터를 주기적으로 포함함으로써 사용자가 스트림의 중간에서 쉽게 시작할 수 있게 한다.

hevc
Parameter set은 비트스트림에 포함되지 않으며, 대신 [[output callback]]을 통해 description으로 방출된다. 이 description은 EncodedVideoChunkMetadata.decoderConfig의 것이다.

참고: 이 형식은 [iso14496-15], 8.3절에서 더 자세히 설명된다. 이 형식은 보통 .MP4 파일에서 사용되며, 여기서 플레이어는 일반적으로 미디어 데이터에 임의 접근할 수 있다.

6. VideoEncoderEncodeOptions 확장

partial dictionary VideoEncoderEncodeOptions {
  VideoEncoderEncodeOptionsForHevc hevc;
};

hevc, 타입 VideoEncoderEncodeOptionsForHevc
[ITU-T-REC-H.265] 코덱에 대한 코덱별 인코딩 옵션을 포함한다.

6.1. VideoEncoderEncodeOptionsForHevc

dictionary VideoEncoderEncodeOptionsForHevc {
  unsigned short? quantizer;
};

quantizer, 타입 unsigned short, nullable
프레임별 quantizer 값을 설정한다. [ITU-T-REC-H.265]에서 quantizer 임계값은 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 정보 기술 — 오디오-비주얼 객체의 코딩 — Part 15: ISO 기본 미디어 파일 형식에서 네트워크 추상화 계층(NAL) unit 구조화 비디오의 운반. 2024년 10월. URL: https://www.iso.org/standard/89118.html
[ITU-T-REC-H.265]
H.265 : 고효율 비디오 코딩. 2021년 8월. URL: https://www.itu.int/rec/T-REC-H.265
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Eugene Zemtsov. WebCodecs Codec Registry. 2026년 2월 12일. DRY. URL: https://www.w3.org/TR/webcodecs-codec-registry/

IDL 색인

partial dictionary VideoEncoderConfig {
  HevcEncoderConfig hevc;
};


dictionary HevcEncoderConfig {
  HevcBitstreamFormat format = "hevc";
};


enum HevcBitstreamFormat {
  "annexb",
  "hevc",
};


partial dictionary VideoEncoderEncodeOptions {
  VideoEncoderEncodeOptionsForHevc hevc;
};


dictionary VideoEncoderEncodeOptionsForHevc {
  unsigned short? quantizer;
};