media-codecs
v2.0.2
Published
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').
Downloads
651
Readme
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" });
// => avc1.4d002a
const mimeType = `video/mp4;codecs="${codec}"`;
console.log(MediaSource.isTypeSupported(mimeType));
Roadmap:
- [ ] HEVC compatibility and constraints
- [ ] VP, HEVC and AV1 optional parameters
API
Modules
Typedefs
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
- 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.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.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
av.getAllItems() ⇒ Array.<MediaCodecItem>
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
| Param | Type | | ------- | ---------------------------------------------- | | options | AVCodecOptions |
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
- avc
- .AVC_PROFILES : Array.<VCProfileItem>
- .AVC_LEVELS : Array.<number>
- .getAllItems() ⇒ Array.<MediaCodecItem>
- .getCodec(options) ⇒ string
- .getCodecName(codec) ⇒ string
avc.AVC_PROFILES : Array.<VCProfileItem>
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
avc.getAllItems() ⇒ Array.<MediaCodecItem>
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
| Param | Type | | ------- | ------------------------------------------------ | | options | AVCCodecOptions |
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
- 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.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.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
hevc.getAllItems() ⇒ Array.<MediaCodecItem>
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
| Param | Type | | ------- | -------------------------------------------------- | | options | HEVCCodecOptions |
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
- 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.VP_CODECS : Array.<CodecItem>
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
vp.getAllItems() ⇒ Array.<MediaCodecItem>
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
| Param | Type | | ------- | ---------------------------------------------- | | options | VPCodecOptions |
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.