일반 미디어 타입에서 "codecs" 파라미터 사용하기

번역 작업 진행 중입니다.

기본적으로, video/mp4audio/mpeg 처럼 MIME 타입을 통해 미디어 파일 포맷을 명시할 수 있습니다. 하지만 많은 미디어 타입들이-특히 비디오 트랙을 지원하는 경우-가지고 있는 데이터 포맷에 대해 더 상세하고 정확하게 명시할 수 있습니다. 예를들어 MPEG-4 비디오라고 해서 MIME 타입을 video/mp4만 명시한다면 정확히 어떤 미디어를 가지고 있는 지 아무 정보도 알 수 없습니다.

때문에 MIME 타입에 추가로 미디어 콘텐츠를 기술하기 위해 codecs 파라미터가 추가되었습니다. 이를 통해 컨테이너 특화된 정보를 제공할 수 있게 되었습니다 이 정보에는 비디오 코덱의 프로파일, 오디오 트랙 타입 등을 추가할 수 있습니다.

이 가이드 문서는 단순히 컨테이너 타입 명시를 넘어 codecs 파라미터의 문법과 MIME 타입에 비디오/오디오 콘텐츠에 대한 상세 정보를 기술하는 방법에 대해 설명합니다.

일반 문법

기본적인 MIME 미디어 타입 표현은 미디어 타입(audio, video, 등)으로 시작하며, 슬래쉬 문자 (/) 후 미디어를 포함하고 있는 컨테이너 포맷이름으로 이어집니다:

audio/mpeg
MP3 같은 MPEG 파일 타입의 오디오 파일입니다.
video/ogg
Ogg 파일 타입의 비디오 파일입니다.
video/mp4
MPEG-4 파일 타입을 사용하는 비디오입니다.
video/quicktime
애플 QuickTime 포맷을 사용하는 비디오입니다. 다른 곳에서 서술되어 있듯이, 한때는 웹에서 널리 쓰여지던 형식이었지만 현재는 플러그인이 필요하여 더 이상 사용하지 않는 타입입니다.

위 MIME 타입은 아직 모호한 표현입니다. 각 파일 타입들은 많은 수의 코덱을 지원하며 코덱은 각기 프로파일, 레벨과 같은 설정 인자들을 가지고 있습니다. 그래서 codecs 파라미터를 추가하여 명시할 수 있습니다.

세미콜론 (;)을 붙이고 codecs= 으로 시작하는 문자열을 덧붙여 콘텐츠의 포맷을 서술할 수 있습니다. 일부 미디어 타입은 사용하는 코덱 이름만 명시 가능할 수 있고 다른 미디어 타입은 코덱에 관한 다양한 인자를 기술할 수 있는 경우도 있습니다. 콤마로 구분하여 여러 코덱을 기술할 수도 있습니다.

audio/ogg; codecs=vorbis
Vorbis 오디오 트랙을 포함하는 Ogg 컨테이너 파일입니다.
video/webm; codecs="vp8, vorbis"
VP8 비디오와 Vorbis 오디오를 포함하는 WebM 컨테이너 파일입니다.
video/mp4; codecs="avc1.4d002a"
AVC (H.264) 코덱에 Main Profile, Level 4.2을 가지는 MPEG-4 컨테이너 파일입니다.

코덱의 속성 중 하나라도 퍼센트-인코딩이 필요한 특수문자RFC 2231, section 4: MIME Parameter Value and Encoded Word Extensions를 사용하는 경우 MIME 타입을 기술하는 문자열의 codecs 파라미터를 codecs* (애스터리크(*) 추가됨에 유의)로 변경해야 합니다. JavaScript encodeURI() function으로 파라미터 목록을 인코딩할 수 있습니다; 반대로 decodeURI()를 통해 기인코딩된 파라미터 리스트를 디코딩할 수 있습니다.

codecs 파라미터를 사용한다면, 파일 콘텐츠가 사용한 모든 코덱을 목록에 명시해야합니다. 목록에 파일이 사용하고 있지 않은 코덱을 명시하는 것도 가능합니다.

컨테이너별 코덱 옵션

아래 컨테이너들은 codecs 파라미터에 확장 옵션을 지원합니다:

링크를 클릭하면 동일한 섹션으로 이동할텐데요; 위 미디어 타입들은 모두 ISO Base Media File Format (ISO BMFF)를 기반하고 있어, 동일한 문법을 공유하기 때문입니다.

AV1

AV1의 codecs 문법은AV1 Codec ISO Media File Format Binding 스펙 문서의, 섹션 5: Codecs Parameter String에 정의되어 있습니다.

av01.P.LLT.DD[.M[.CCC[.cp[.tc[.mc[.F]]]]]]

아래 표에서 코덱 파라미터 문자열 구성요소에 대해 자세히 설명하고 있습니다. 각 요소들은 고정된 개수의 문자로 되어 있으며;고정 길이보다 짧은 경우 앞에 0을 붙여서 맞춰야 합니다..

AV1 코덱 파라미터 문자열 요소
요소 내용
P

한자리 숫자 프로파일 번호:

AV1 프로파일 번호
프로파일 번호 설명
0 "Main" 프로파일; YUV 4:2:0/모노크롬 크로마 서브샘플링 및 8/10 비트 색 깊이 지원.
1 "High" 프로파일 4:4:4 크로마 서브샘플링 추가 지원.
2 "Professional" 프로파일, 4:2:2 크로마 서브샘플링 및 12 비트 색 깊이 추가 지원
LL 두자리 숫자 레벨 번호,  X.Y 형태의 레벨 포맷으로 변환 됨, X = 2 + (LL >> 2)Y = LL & 3. 자세한 내용은 AV1 스펙 문서의 Appendix A, section 3 참조.
T 한자리 문자 티어 표시. Main 티어라면 (seq_tier equals 0), 문자는 M. High 티어는 (seq_tier is 1) H. High 티어는 4.0 이상 레벨에서만 가능합니다.
DD 두자리 숫자 색 깊이. 8, 10, 12 중 하나여야 하며; 프로파일과 다른 속성에서 지원 가능한 값이여야 합니다.
M 한자리 숫자 모노크롬 플래그; 0인 경우 비디오는 U, V, Y 성분을 모두 가지고 있습니다. 아닌 경우 전체 비디오 데이터는 Y(휘도) 성분 뿐으로 모노크롬 이미지를 가집니다. 자세한 내용은 YUV in Digital video concepts를 참조하여 YUV 컬러 시스템이 어떻게 동작하는지 알아보세요. 기본 값은 0 (모노크롬 아님)입니다.
CCC

CCC 는 세자리 숫자로 크로마 서브샘플링을 표기합니다. 첫번째 숫자는 subsampling_x, 두 번째 숫자는 subsampling_y. 둘다 1인경우, 세번째 값은 chroma_sample_position; 아닌 경우 세번째 값은 항상 0입니다. M 값과 더불어 크로마 서브샘플링 포맷을 구성하는 요소입니다:

크로마 서브샘플링 결정 방식
subsampling_x subsampling_y Monochrome flag Chroma subsampling format
0 0 0 YUV 4:4:4
1 0 0 YUV 4:2:2
1 1 0 YUV 4:2:0
1 1 1 YUV 4:0:0 (Monochrome)

CCC의 세번째 값은 크로마 샘플 위치(chroma sample position)로, 0은 위치를 알 수 없으며 디코딩 시 개별적으로 제공해야 함을 의미합니다; 1은 샘플이 (0, 0) 휘도 샘플과 동일한 수평선상에 있음을 의미합니다; 2는 샘플이 (0, 0) 휘도 샘플과 동일한 위치에 있음을 의미합니다.

기본 값은 110 (4:2:0 크로마 서브샘플링)입니다.

cp 두자리 숫자 color_primaries 값은 미디어의 색 공간을 표시합니다. 예를 들어 HDR 비디오에서 사용하는 BT.2020/BT.2100 색 공간은 09입니다. 자세한 정보-그 외의 색 공간 값을 포함하여-는 AV1 스펙 문서의 Color config semantics section 를 참조하세요. 기본값은 01 (ITU-R BT.709)입니다.
tc 두자리 숫자 transfer_characteristics 값. 이 값은 소스에서 디스플레이로 감마를 매핑하는 함수(기술적인 용어로 "opto-electrical transfer function"라 표현)를 정의합니다. 예를 들어 10-bit BT.2020는 14입니다. 기본 값은 01 (ITU-R BT.709)입니다.
mc 두자리 숫자 matrix_coefficients 상수는 RGB 컬러 채널을 휘도/색차 신호로 변환 시 사용할 계수 행렬을 선택합니다. 예를 들어 BT.709의 표준 계수 값은 01로 표현합니다. 기본 값은 01 (ITU-R BT.709)입니다.
F 한자리 숫자로 색상이 가능한 모든 범위를 표현해야 할지(1), 지정한 색 설정에 의해 적합하다고 여겨지는 범위로 제한하여 표현(studio swing representation이라 표현)해야 할지를 나타내는 값입니다. 기본 값은 0 (studio swing representation 적용)입니다.

M (모노크롬 플래그)이후의 요소는 모두 비필수입니다; 어느 곳에서부터나 생략할 수 있습니다 (하지만 임의의 중간 요소를 생략할 수는 없습니다). 기본 값은 위 표에 서술하였습니다. AV1 코덱 문자열 예시는 아래와 같습니다:

av01.2.15M.10.0.100.09.16.09.0
AV1 Professional 프로파일, 레벨 5.3, Main 티어, 10 비트 색 깊이, 4:2:2 크로마 서브샘플링 ITU-R BT.2100 색 공간, 색 전환 YCbCr 색상 행렬. Studio swing representation 적용.
av01.0.15M.10
AV1 Main 프로파일, 레벨 5.3, Main 티어, 10 비트 색 깊이. 나머지 요소는 기본 값 사용: 4:2:0 크로마 서브 샘플링, BT.709 색 공간, 색 전환, 계수 행렬 사용. Studio swing representation.

ISO Base Media File Format: MP4, QuickTime, and 3GP

모든 미디어 타입은 ISO Base Media File Format (ISO BMFF)를 기반으로 하며 codecs 문법을 공유합니다. 이들 미디어 타입은 MPEG-4 (또 사실상 MPEG-4를 기반으로 하고 있으므로 QuickTime도 포함)과 3GP를 포함합니다. MIME 타입의 codecs 파라미터를 통해 아래와 같이 비디오/오디오 트랙 둘 다 기술할 수 있습니다.:

ISO BMFF codecs 파라미터를 지원하는 기본 MIME 타입
MIME 타입 설명
audio/3gpp 3GP 오디오 (RFC 3839: MIME Type Registrations for 3rd generation Partnership Project (3GP) Multimedia files)
video/3gpp 3GP 비디오 (RFC 3839: MIME Type Registrations for 3rd generation Partnership Project (3GP) Multimedia files)
audio/3gp2 3GP2 오디오 (RFC 4393: MIME Type Registrations for 3GPP2 Multimedia files)
video/3gp2 3GP2 비디오 (RFC 4393: MIME Type Registrations for 3GPP2 Multimedia files)
audio/mp4 MP4 오디오 (RFC 4337: MIME Type Registration for MPEG-4)
video/mp4 MP4 비디오 (RFC 4337: MIME Type Registration for MPEG-4)
application/mp4 오디오/비디오가 아닌 MPEG-4 컨테이너 미디어

codecs 파라미티에는 간단하게 컨테이너 명(3gp, mp4, quicktime, etc.)만 기술할 수도 있으며 컨테이너 명에 코덱 이름 및 설정 값을 함께 기술할 수도 있습니다. 각 코덱 등은 온점(.)으로 구분된 요소를 다수 가질 수 있습니다.

codecs 값의 문법은 코덱마다 다릅니다; 하지만 항상 4 글자 코덱 구분자와 온점(.)으로 시작하며 데이터 포맷을 기술하기 위핸 Object Type Indication (OTI) 형식의 문자열이 뒤따릅니다. 대부분의 코덱에서 OTI는 두자리 16진수로 되어 있지만 AVC (H.264)는 6자리 16진수로 구성되어 있습니다.

따라서 지원하는 코덱 문법은 아래와 유사합니다:

cccc[.pp]* (Generic ISO BMFF)
cccc 는 4 글자 코덱 ID이며  pp는 0~2자리 인코딩 된 문자입니다.
mp4a.oo[.A] (MPEG-4 audio)
oo 는 미디어 콘텐츠를 더 정확하게 기술하는 Object Type Indication 값이며 A 는 한자리 숫자오디오 OTI입니다. OTI로 가능한 값은 MP4 Registration Authority 웹사이트의 Object Types page 페이지에서 확인할 수 있습니다. 예를들어 MP4 파일의 Opus 오디오는 mp4a.ad로 기술합니다. 자세한 내용은 MPEG-4 audio를 참조하세요.
mp4v.oo[.V] (MPEG-4 video)
마찬가지로 oo 는 미디어 콘텐츠를 명시하는 OTI 값이며, V 는 한자리 숫자 비디오 OTI 값입니다.
avc1.oo[.PPCCLL] (AVC video)

oo 는 콘텐츠를 명시하는 OTI 값이며, while PPCCLL 는 6자리 16진수로써 프로파일 넘버 (PP), 제약 플래그 (CC), 레벨 (LL)을 의미합니다. PP로 가능한 값은 AVC profiles를 참조하세요.

제약 플래그는 1 비트 불리언 값이며, MSB는 flag 0(또는 일부에선 constraint_set0_flag)로 취급합니다. 그리고 이어지는 비트는 하나씩 번호가 높게 매겨집니다. 현재로썬 0부터 2번째 비트까지만 사용하며;나머지 5개의 비트는 반드시 0이어야합니다. 각 플래그의 의미는 사용하는 프로파일에 따라 달라집니다.

레벨 값은 고정 소수점이므로 숫자 14 (10진법 20) 은 레벨 2.0을 의미하며 3D (10진법 61) 은 레벨 6.1을 의미합니다. 일반적으로 레벨 숫자가 높을 수록 스트림 대역폭이 높아 더 큰 크기의 비디오를 지원할 수 있습니다.

AVC 프로파일

아래의 AV 프로파일 넘버는 codecs 파라미터에서 사용하며 제약 요소 값은 CC로 사용할 수 있습니다.

codecs  파라미터에서 AVC 프로파일과 제약 요건을 명세하기 위한 값
프로파일 넘버(Hex) 제약 (byte)
Constrained Baseline Profile (CBP)
CBP는 리소스가 제약점이 있거나 재생이 원활하지 못해 발생하는 이상 요소들을 최소화 해야 하는 경우 주요한 해결책입니다.
42 40
Baseline Profile (BP)
CBP와 유사하나 데이터 손실 방지와 복구 능력을 향상시킨 프로파일입니다.  CBP가 도입된 이후에는 이전만큼 널리 사용하고 있지는 않습니다. CBP 스트림은 모두 BP 스트림으로 간주할 수도 있습니다.
42 00
Extended Profile (XP)
고효율 압축과 네트워크 전송시의 데이터 안정성, 스트림 스위칭을 고려한 프로파일입니다.
58 00
Main Profile (MP)
MPEG-4 포맷으로 전송하는 디지털 표준 TV 방송에서 사용하는 프로파일입니다. 고선명 TV(HDV)에서는 사용하지 않습니다. 2004년 —HDTV에서 사용하기 위해— High Profile이 추가된 이후 중요도가 감소하였습니다.
4D 00
High Profile (HiP)
현재로써는 전파방송과 매체기반 HD 비디오에서 사용하는 주요 프로파일입니다. HD TV 방송과 블루레이 미디어에서 사용하고 있습니다.
64 00
Progressive High Profile (PHiP)
필드 코딩 지원을 제거한 High Profile입니다.
64 08
Constrained High Profile
양방향 예측 슬라이스("B-slices") 지원을 제거한 PHiP입니다.
64 0C
High 10 Profile (Hi10P)
10 비트 컬러 모드 지원을 제거한 High Profile입니다.
6E 00
High 4:2:2 Profile (Hi422P)
Hi10P에 4:2:2 크로마 서브샘플링과 최대 10비트 컬러 모드 지원을 추가한 프로파일입니다.
7A 00
High 4:4:4 Predictive Profile (Hi444PP)
Hi422P 및 Hi444PP에 4:4:4 크로마 서브샘플링(색차 샘플링 소거 없음)을 추가 지원한 프로파일입니다. 또한 최대 14비트 컬러 샘플과 효율적인 무손실 지역 코딩을 추가하였습니다. 각 프레임을 3개의 분리된 컬러 평면(각 평면은 모노크롬 프레임형태로 저장됩니다)으로 인코딩할 수 있는 옵션입니다.
F4 00
High 10 Intra Profile
all-intra-frame에 High 10 제약이 걸린 프로파일입니다. 전문가 용 앱에 주로 쓰입니다.
6E 10
High 4:2:2 Intra Profile
all-intra-frame에 Hi422를 적용한 프로파일입니다.
7A 10
High 4:4:4 Intra Profile
all-intra-frame에 High 4:4:4 제약을 건 프로파일입니다.
F4 10
CAVLC 4:4:4 Intra Profile
all-intra-frame에 High 4:4:4 제약, CAVLC 엔트로피 코딩만 사용하는 프로파일입니다.
44 00
Scalable Baseline Profile
화상 회의, 감시 카메라 및 모바일 장치에서 쓰이는 프로파일로, SVC Baseline Profile은 AVC의 Constrained Baseline profile에 기반하고 있습니다. 스트림의 베이스 레이어는 고품질로 제공되면서, 제약이 걸린 환경에서 대안이 될 수 있는 서브스트림을 다수 제공하는 방식입니다. 서브스트림은 해상도 감소, 낮은 프레임레이트, 압축률 저하 등을 조합하여 구성합니다.
53 00
Scalable Constrained Baseline Profile
실시간 양방향 대화형 어플리케이션에서 주요 사용하는 프로파일입니다. WebRTC에서 아직 정식으로 지원하지는 않지만,  SVC를 활성화하여 WebRTC AP 개발 모드에서 사용해 볼 수 있습니다.
53 04
Scalable High Profile
방송 및 스트리밍 어플리케이션에서 주로 사용합니다. 베이스(또는 최고 품질) 레이어에는 AVC High Profile이 반드시 포함되어야 합니다.
56 00
Scalable Constrained High Profile
실시간 통신을 위한 Scalable High Profile의 서브셋 프로파일입니다.
56 04
Scalable High Intra Profile
비디오 제작 어플리케이션을 위한 all-intra-frame 프로파일입니다.
56 20
Stereo High Profile
양안 렌더링을 통한 스테레오스코픽(stereoscopic) 비디오를 지원하는 프로파일입니다. 양안 영상이 아닌 경우 High profile과 동일합니다.
80 00
Multiview High Profile
시간 및 MVC inter-view 예측을 통한 2개 이상의 뷰를 지원하는 프로파일입니다.. Does not support field pictures 필드 픽쳐 또는 매크로블록-어댑티브한 frame-field 코딩을 지원하지 않습니다.
76 00
Multiview Depth High Profile
Based on the High Profile, to which the main substream must adhere. The remaining substreams must match the Stereo High Profile.
8A 00

MPEG-4 audio

When the value of an entry in the codecs 목록의 값 항목이 mp4a로 시작한다면, 문법은 아래와 같아야 합니다:

mp4a.oo[.A]

oo 는 두자리 16진수 Object Type Indication으로 미디어에 사용된 코덱 클래스를 표시합니다. OTI 값은 MP4 Registration Authority에서 규정하고 있으며 list of the possible OTI values에서 가용한 값을 확인할 수 있습니다. 특수한 값인 40; 이는 미디어가 MPEG-4 audio(ISO/IEC 14496 Part 3)임을 나타냅니다. 조금 더 자세히 말하자면, 세번째 컴포넌트—Audio Object Type—은 OTI 40 을 MPEG-4의 특정 하위 타입으로 범위를 좁히기 위해 추가하였습니다.

Audio Object Type는 두자리 10진수로 이루어져 있습니다(codecs 파라미터의 다른 값은 대부분 16진수). 예를들어 MPEG-4 AAC-LC의 오디오 오브젝트 타입은 숫자 2이므로 AAC-LC의 전체 codecs 표현 값은 mp4a.40.2 입니다.

그러므로 오디오 오브젝트 타입이 17인 ER AAC LC의 전체 codecs 값은 mp4a.40.17 입니다. 한자리 숫자는 한자리로 표현하거나(폭넓게 호환되므로 최선) 앞에 0을 붙여 두자리로 표현할 수 있습니다. mp4a.40.02 처럼요.

Note: 원래 Audio Object Type은 한자리 숫자로 규정되었었습니다. 시간이 지나면서 표준을 확장하였고 현재는 한자리 또는 두자리 숫자입니다. 10 미만의 값 앞에 0 을 붙이는건 필수가 아닙니다. 오래된 MPEG-4 코덱 구현체들은 두자리 숫자를 지원하지 못할 수도 있습니다. 따라서 호환성을 높이기 위해선 한자리로 표현해야 합니다.

Audio Object Types는 ISO/IEC 14496-3 subpart 1, section 1.5.1에서 정의하고 있습니다. 아래 표는 Audio Object Type 기본 목록과 지원하는 프로필입니다. MPEG-4 audio type의 내부에 대해서 더 알고 싶다면 레퍼런스를 참조하세요.

MPEG-4 audio object types
ID Audio Object Type Profile support
0 NULL
1 AAC Main Main
2 AAC LC (Low Complexity) Main, Scalable, HQ, LD v2, AAC, HE-AAC, HE-AAC v2
3 AAC SSR (Scalable Sampling Rate) Main
4 AAC LTP (Long Term Prediction) Main, Scalable, HQ
5 SBR (Spectral Band Replication) HE-AAC, HE-AAC v2
6 AAC Scalable Main, Scalable, HQ
7 TwinVQ (Coding for ultra-low bit rates) Main, Scalable
8 CELP (Code-Excited Linear Prediction) Main, Scalable, Speech, HQ, LD
9 HVXC (Harmonic Vector Excitation Coding) Main, Scalable, Speech, LD
10 – 11 Reserved
12 TTSI (Text to Speech Interface) Main, Scalable, Speech, Synthetic, LD
13 Main Synthetic Main, Synthetic
14 Wavetable Synthesis
15 General MIDI
16 Algorithmic Synthesis and Audio Effects
17 ER AAC LC (Error Resilient AAC Low-Complexity) HQ, Mobile Internetworking
18 Reserved
19 ER AAC LTP (Error Resilient AAC Long Term Prediction) HQ
20 ER AAC Scalable (Error Resilient AAC Scalable) Mobile Internetworking
21 ER TwinVQ (Error Resilient TwinVQ) Mobile Internetworking
22 ER BSAC (Error Reslient Bit-Sliced Arithmetic Coding) Mobile Internetworking
23 ER AAC LD (Error Resilient AAC Low-Delay; used for two-way communiation) LD, Mobile Internetworking
24 ER CELP (Error Resilient Code-Excited Linear Prediction) HQ, LD
25 ER HVXC (Error Resilient Harmonic Vector Excitation Coding) LD
26 ER HILN (Error Resilient Harmonic and Individual Line plus Noise)
27 ER Parametric (Error Resilient Parametric)
28 SSC (Sinusoidal Coding)
29 PS (Parametric Stereo) HE-AAC v2
30 MPEG Surround
31 Escape
32 MPEG-1 Layer-1
33 MPEG-1 Layer-2 (MP2)
34 MPEG-1 Layer-3 (MP3)
35 DST (Direct Stream Transfer)
36 ALS (Audio Lossless)
37 SLS (Scalable Lossless)
38 SLS Non-core (Scalable Lossless Non-core)
39 ER AAC ELD (Error Resilient AAC Enhanced Low Delay)
40 SMR Simple (Symbolic Music Representation Simple)
41 SMR Main (Symbolic Music Representation Main)
42 Reserved
43 SAOC (Spatial Audio Object Coding)[1]
44 LD MPEG Surround (Low Delay MPEG Surround)[1]
45 and up Reserved

[1] SAOC and LD MPEG Surround are defined in ISO/IEC 14496-3:2009/Amd.2:2010(E).

WebM

WebM codecs 파라미터의 기본 형은 4개의 WebM 코덱 중 하나 이상의 이름을 콤마로 구분합니다. 아래 표는 예시입니다.:

WebM MIME codecs 파라미터 예시
MIME 타입 설명
video/webm;codecs="vp8" VP8 코덱 WebM 비디오; 오디오 미정의.
video/webm;codecs="vp9" VP9 코덱 WebM 비디오.
audio/webm;codecs="vorbis" Vorbis 오디오 WebM 파일.
audio/webm;codecs="opus" Opus 오디오 WebM 파일.
video/webm;codecs="vp8,vorbis" VP8 비디오 코덱, Vorbis 오디오 코덱 포함된 WebM 파일.
video/webm;codecs="vp9,opus" A WebM container with VP9 video and Opus audio.

vp8.0vp9.0 문자열도 가능하지만, 비추천합니다.

ISO Base Media File Format 문법

codecs 파라미터를 표준화하고 강력한 포맷으로 발전시키기 위해, WebM은 ISO Base Media File Format 에 정의된 문법에 따라 비디오 콘텐츠를 기술하기 시작했습니다. 본 문법은 VP Codec ISO Media File Format Binding의, Codecs Parameter String 섹션에 정의되어 있습니다. 오디오 코덱은 vorbis 또는 opus로 표시되어 있습니다.

codecs 파리미터는 사용한 코덱을 나타내는 4자리 문자로 시작하고 온점(.)으로 구분된 2자리 숫자가 반복됩니다.

cccc.PP.LL.DD.CC[.cp[.tc[.mc[.FF]]]]

처음부터 5개 요소는 필수이며; cp (color primaries) 부터는 옵션입니다.; 이후로는 어디서든 끊을 수 있습니다. 각 요소는 아래 표에 설명하고 있으며 예시가 첨부되어 있습니다.

WebM codecs parameter components
Component Details
cccc

A four-character code indicating which indicates which of the possible codecs is being described. Potential values are:

Four-character codes for WebM-supported codecs
Four-character code Codec
vp08 VP8
vp09 VP9
vp10 VP10
PP

The two-digit profile number, padded with leading zeroes if necessary to be exactly two digits.

WebM profile numbers
Profile Description
00 Only 4:2:0 (chroma subsampled both horizontally and vertically). Allows only 8 bits per color component.
01 All chroma subsampling formats are allowed. Allows only 8 bits per color component.
02 Only 4:2:0 (chroma subsampled both horizontally and vertically). Supports 8, 10, or 12 bits per color sample component.
03 All chroma subsampling formats are allowed. Supports 8, 10, or 12 bits per color sample component.
LL The two-digit level number. The level number is a fixed-point notation, where the first digit is the ones digit, and the second digit represents tenths. For example, level 3 is 30 and level 6.1 is 61.
DD The bit depth of the luma and color component values; permitted values are 8, 10, and 12.
CC

A two-digit value indicating which chroma subsampling format to use. The following table lists permitted values; see Chroma subsampling in Digital video concepts for additional information about this topic and others.

WebM chroma subsampling identifiers
Value Chroma subsampling format
00 4:2:0 with the chroma samples sited interstitially between the pixels
01 4:2:0 chroma subsampling with the samples colocated with luma (0, 0)
02 4:2:2 chroma subsampling (4 out of each 4 horizontal pixels' luminance are used)
03 4:4:4 chroma subsampling (every pixel's luminance and chrominance are both retained)
04 Reserved
cp

A two-digit integer specifying which of the color primaries from Section 8.1 of the ISO/IEC 23001-8:2016 standard. This component, and every component after it, is optional.

The possible values of the color primaries component are:

ISO/IEC Color primary identifiers
Value Details
00 Reserved for future use by ITU or ISO/IEC
01 BT.709, sRGB, sYCC. BT.709 is the standard for high definition (HD) television; sRGB is the most common color space used for computer displays. Broadcast BT.709 uses 8-bit color depth with the legal range being from 16 (black) to 235 (white).
02 Image characteristics are unknown, or are to be determined by the application
03 Reserved for future use by ITU or ISO/IEC
04 BT.470 System M, NTSC (standard definition television in the United States)
05 BT.470 System B, G; BT.601; BT.1358 625; BT.1700 625 PAL and 625 SECAM
06 BT.601 525; BT.1358 525 or 625; BT.1700 NTSC; SMPTE 170M. Functionally identical to 7.
70 SMPTE 240M (historical). Functionally identical to 6.
08 Generic film
09 BT.2020; BT.2100. Used for ultra-high definition (4K) High Dynamic Range (HDR) video, these have a very wide color gamut and support 10-bit and 12-bit color component depths.
10 SMPTE ST 428 (D-Cinema Distribution Master: Image characteristics). Defines the uncompressed image characteristics for DCDM.
11 SMPTE RP 431 (D-Cinema Quality: Reference projector and environment). Describes the reference projector and environment conditions that provide a consistent film presentation experience.
12 SMPTE EG 432 (Digital Source Processing: Color Processing for D-Cinema). Engineering guideline making color signal decoding recommendations for digital movies.
13 – 21 Reserved for future use by ITU-T or ISO/IEC
22 EBU Tech 3213-E
23 – 255 Reserved for future use by ITU-T or ISO/IEC
tc A two-digit integer indicating the transferCharacteristics for the video. This value is from Section 8.2 of ISO/IEC 23001-8:2016, and indicates the transfer characteristics to be used when adapting the decoded color to the render target.
mc The two-digit value for the matrixCoefficients property. This value comes from the table in Section 8.3 of the ISO/IEC 23001-8:2016 specification. This value indicates which set of coefficients to use when mapping from the native red, blue, and green primaries to the luma and chroma signals. These coefficients are in turn used with the equations found in that same section.
FF Indicates whether to restrict the black level and color range of each color component to the legal range. For 8 bit color samples, the legal range is 16-235. A value of 00 indicates that these limitations should be enforced, while a value of 01 allows the full range of possible values for each component, even if the resulting color is out of bounds for the color system.

WebM media type examples

video/webm;codecs="vp08.00.41.08,vorbis"
VP8 video, profile 0 level 4.1, using 8-bit YUV with 4:2:0 chroma subsampling, using BT.709 color primaries, transfer function, and matrix coefficients, with the luminance and chroma values encoded within the legal ("studio") range. The video is Vorbis.
video/webm;codecs="vp09.02.10.10.01.09.16.09.01,opus"
VP9 video, profile 2 level 1.0, with 10-bit YUV content using 4:2:0 chroma subsampling, BT.2020 primaries, ST 2084 EOTF (HDR SMPTE), BT.2020 non-constant luminance color matrix, and full-range chroma and luma encoding. The audio is in Opus format.

Using the codecs parameter

You can use the codecs parameter in a few situations. Firstly, you can use it with the <source> element when creating an <audio> or <video> element, in order to establish a group of options for the browser to choose from when selecting the format of the media to present to the user in the element.

You can also use the codecs parameter when specifying a MIME media type to the MediaSource.isTypeSupported() method; this method returns a Boolean which indicates whether or not the media is likely to work on the current device.

See also