media-codecs
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.
Installation
npm install media-codecs
Usage
import { AVC } from "media-codecs";
const codec = AVC.getCodec({ profile: "Main", level: "4.2" });
const mimeType = `video/mp4;codecs="${codec}"`;
console.log(MediaSource.isTypeSupported(mimeType));
Roadmap:
API
Modules
- media-codecs
- av
- avc
- hevc
- vp
Typedefs
- AVProfileItem :
object
- VCProfileItem :
object
- CodecItem :
object
- MediaCodecItem :
object
- VPCodecOptions :
object
- AVCodecOptions :
object
- AVCCodecOptions :
object
- HEVCCodecOptions :
object
media-codecs
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
List of codecs
Kind: static constant of av
List of AV profiles numbers
Kind: static constant of av
See: av1-spec
av.AV_LEVELS : Array.<string>
AV Levels
Kind: static constant of av
See: av1-spec
av.AV_TIER : Array.<string>
List of supported tier
Kind: static constant of av
av.AV_BIT_DEPTH : Array.<number>
List of supported bit depth
Kind: static constant of av
Return a list of all possible codec parameter string and their human readable names
Kind: static method of av
av.getCodec(options) ⇒ string
Get a codec parameter string
Kind: static method of av
av.getCodecName(codec) ⇒ string
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
List of profiles with their profile numbers (PP) and the constraints component (CC).
Kind: static constant of avc
avc.AVC_LEVELS : Array.<number>
AVC Levels
Kind: static constant of avc
See: wikipedia.org
Return a list of all possible codec parameter string and their human readable names
Kind: static method of avc
avc.getCodec(options) ⇒ string
Get a codec parameter string
Kind: static method of avc
avc.getCodecName(codec) ⇒ string
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
List of profiles with their profile numbers (PP) and the compatibility (C).
See Annexe 3 Profiles
Kind: static constant of hevc
hevc.HEVC_PROFILE_COMPATIBILITY : Array.<number>
HEVC Profile Compatibility as a number in the 0..32 range
TODO: is that correct
Kind: static constant of hevc
hevc.HEVC_LEVELS : Array.<string>
HEVC Levels
Kind: static constant of hevc
See: hevc-levels
hevc.HEVC_TIER : Array.<string>
List of supported tier
Kind: static constant of hevc
Return a list of all possible codec parameter string and their human readable names
Kind: static method of hevc
hevc.getCodec(options) ⇒ string
Get a codec parameter string
Kind: static method of hevc
hevc.getCodecName(codec) ⇒ string
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
List of codecs
Kind: static constant of vp
vp.VP_PROFILES : Array.<number>
List of VP profiles numbers
Kind: static constant of vp
vp.VP_LEVELS : Array.<string>
VP Levels
Kind: static constant of vp
See: webmproject.org
vp.VP_BIT_DEPTH : Array.<number>
List of supported bit depth
Kind: static constant of vp
Return a list of all possible codec parameter string and their human readable names
Kind: static method of vp
vp.getCodec(options) ⇒ string
Get a codec parameter string
Kind: static method of vp
vp.getCodecName(codec) ⇒ string
Get a codec human readbable name
Kind: static method of vp
Param | Type | Description |
---|
codec | string | a codec string (avc1[.PPCCLL] eg. "avc1.640028") |
AVProfileItem : object
Kind: global typedef
Properties
Name | Type | Description |
---|
name | string | |
PP | string | profile numbers (seq_profile) |
VCProfileItem : object
Kind: global typedef
Properties
Name | Type | Description |
---|
name | string | |
PP | string | profile numbers as hex string |
CC | string | constraints component as hex string |
CodecItem : object
Kind: global typedef
Properties
Name | Type | Description |
---|
name | string | |
cccc | string | the four-character ID for the codec |
MediaCodecItem : object
Kind: global typedef
Properties
Name | Type |
---|
name | string |
codec | string |
VPCodecOptions : object
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 | |
AVCodecOptions : object
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 |
AVCCodecOptions : object
Kind: global typedef
Properties
Name | Type | Description |
---|
profile | string | AVC profile name (eg. "Baseline") |
level | string | |
HEVCCodecOptions : object
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 |
License
MIT. See license file.