Get a codec parameter string (like "avc1.4d002a"
) from human readable options (like { name: "Main", level: "4.2" }
) and back to a descriptive name ("AVC Main Profile Level 4.2").
Useful for checking supported codecs with HTMLMediaElement.canPlayType
/ MediaSource.isTypeSupported
and to pass as option for the WebCodecs API VideoEncoder configure parameters. Supports Advanced Video Coding (AVC), Video Partition (VP8/VP9), AOMedia Video (AV1) and partially High Efficiency Video Coding HEVC.
See the demo that checks current browser support of all video codecs and MDN's Codecs in common media types.
npm install media-codecs
import { AVC } from "media-codecs";
const codec = AVC.getCodec({ profile: "Main", level: "4.2" });
// => avc1.4d002a
const mimeType = `video/mp4;codecs="${codec}"`;
console.log(MediaSource.isTypeSupported(mimeType));
Roadmap:
- HEVC compatibility and constraints
- VP, HEVC and AV1 optional parameters
- AVProfileItem :
object
- VCProfileItem :
object
- CodecItem :
object
- MediaCodecItem :
object
- VPCodecOptions :
object
- AVCodecOptions :
object
- AVCCodecOptions :
object
- HEVCCodecOptions :
object
media-codecs.VP : vp
Kind: static property of media-codecs
media-codecs.AV : av
Kind: static property of media-codecs
media-codecs.AVC : avc
Kind: static property of media-codecs
media-codecs.HEVC : hevc
Kind: static property of media-codecs
- av
- .AV_CODECS :
Array.<CodecItem>
- .AV_PROFILES :
Array.<AVProfileItem>
- .AV_LEVELS :
Array.<string>
- .AV_TIER :
Array.<string>
- .AV_BIT_DEPTH :
Array.<number>
- .getAllItems() ⇒
Array.<MediaCodecItem>
- .getCodec(options) ⇒
string
- .getCodecName(codec) ⇒
string
- .AV_CODECS :
av.AV_CODECS : Array.<CodecItem>
List of codecs
Kind: static constant of av
av.AV_PROFILES : Array.<AVProfileItem>
List of AV profiles numbers
Kind: static constant of av
See: av1-spec
AV Levels
Kind: static constant of av
See: av1-spec
List of supported tier
Kind: static constant of av
List of supported bit depth
Kind: static constant of av
av.getAllItems() ⇒ Array.<MediaCodecItem>
Return a list of all possible codec parameter string and their human readable names
Kind: static method of av
Get a codec parameter string
Kind: static method of av
Param | Type |
---|---|
options | AVCodecOptions |
Get a codec human readbable name
Kind: static method of av
Param | Type | Description |
---|---|---|
codec | string |
a codec string (av01.P.LLT.DD eg. "av01.P.LLT.DD") |
- avc
- .AVC_PROFILES :
Array.<VCProfileItem>
- .AVC_LEVELS :
Array.<number>
- .getAllItems() ⇒
Array.<MediaCodecItem>
- .getCodec(options) ⇒
string
- .getCodecName(codec) ⇒
string
- .AVC_PROFILES :
avc.AVC_PROFILES : Array.<VCProfileItem>
List of profiles with their profile numbers (PP) and the constraints component (CC).
Kind: static constant of avc
AVC Levels
Kind: static constant of avc
See: wikipedia.org
avc.getAllItems() ⇒ Array.<MediaCodecItem>
Return a list of all possible codec parameter string and their human readable names
Kind: static method of avc
Get a codec parameter string
Kind: static method of avc
Param | Type |
---|---|
options | AVCCodecOptions |
Get a codec human readbable name
Kind: static method of avc
Param | Type | Description |
---|---|---|
codec | string |
a codec string (cccc.PP.LL.DD eg. "vp09.00.10.08") |
- hevc
- .HEVC_PROFILES :
Array.<VCProfileItem>
- .HEVC_PROFILE_COMPATIBILITY :
Array.<number>
- .HEVC_LEVELS :
Array.<string>
- .HEVC_TIER :
Array.<string>
- .getAllItems() ⇒
Array.<MediaCodecItem>
- .getCodec(options) ⇒
string
- .getCodecName(codec) ⇒
string
- .HEVC_PROFILES :
hevc.HEVC_PROFILES : Array.<VCProfileItem>
List of profiles with their profile numbers (PP) and the compatibility (C).
See Annexe 3 Profiles
Kind: static constant of hevc
HEVC Profile Compatibility as a number in the 0..32 range TODO: is that correct
Kind: static constant of hevc
HEVC Levels
Kind: static constant of hevc
See: hevc-levels
List of supported tier
Kind: static constant of hevc
hevc.getAllItems() ⇒ Array.<MediaCodecItem>
Return a list of all possible codec parameter string and their human readable names
Kind: static method of hevc
Get a codec parameter string
Kind: static method of hevc
Param | Type |
---|---|
options | HEVCCodecOptions |
Get a codec human readbable name
Kind: static method of hevc
Param | Type | Description |
---|---|---|
codec | string |
a codec string (cccc.PP.C.TLL.CC eg. "hev1.1.3.H34.B0") |
- vp
- .VP_CODECS :
Array.<CodecItem>
- .VP_PROFILES :
Array.<number>
- .VP_LEVELS :
Array.<string>
- .VP_BIT_DEPTH :
Array.<number>
- .getAllItems() ⇒
Array.<MediaCodecItem>
- .getCodec(options) ⇒
string
- .getCodecName(codec) ⇒
string
- .VP_CODECS :
vp.VP_CODECS : Array.<CodecItem>
List of codecs
Kind: static constant of vp
List of VP profiles numbers
Kind: static constant of vp
VP Levels
Kind: static constant of vp
See: webmproject.org
List of supported bit depth
Kind: static constant of vp
vp.getAllItems() ⇒ Array.<MediaCodecItem>
Return a list of all possible codec parameter string and their human readable names
Kind: static method of vp
Get a codec parameter string
Kind: static method of vp
Param | Type |
---|---|
options | VPCodecOptions |
Get a codec human readbable name
Kind: static method of vp
Param | Type | Description |
---|---|---|
codec | string |
a codec string (avc1[.PPCCLL] eg. "avc1.640028") |
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
name | string |
|
PP | string |
profile numbers (seq_profile) |
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
name | string |
|
PP | string |
profile numbers as hex string |
CC | string |
constraints component as hex string |
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
name | string |
|
cccc | string |
the four-character ID for the codec |
Kind: global typedef Properties
Name | Type |
---|---|
name | string |
codec | string |
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
name | string |
Human readable codec name: "VP8" or "VP9" |
profile | number |
0, 1, 2 or 3 |
level | string |
|
bitDepth | number |
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
name | string |
Human readable codec name: "AV1", potentially AV2 in the future |
profile | string |
AV profile name: "Main", "High" or "Professional" |
level | string |
|
tier | string |
"Main" or "High" |
bitDepth | number |
8, 10 or 12 |
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
profile | string |
AVC profile name (eg. "Baseline") |
level | string |
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
profile | string |
HEVC profile name (eg. "Main 10") |
compatibility | number |
|
level | string |
|
tier | string |
"Main" or "High" |
constraint | string |
TODO |
MIT. See license file.