mirror of https://bitbucket.org/ausocean/av.git
78 lines
1.5 KiB
JavaScript
78 lines
1.5 KiB
JavaScript
|
// from http://mp4ra.org/codecs.html
|
||
|
const sampleEntryCodesISO = {
|
||
|
audio: {
|
||
|
'a3ds': true,
|
||
|
'ac-3': true,
|
||
|
'ac-4': true,
|
||
|
'alac': true,
|
||
|
'alaw': true,
|
||
|
'dra1': true,
|
||
|
'dts+': true,
|
||
|
'dts-': true,
|
||
|
'dtsc': true,
|
||
|
'dtse': true,
|
||
|
'dtsh': true,
|
||
|
'ec-3': true,
|
||
|
'enca': true,
|
||
|
'g719': true,
|
||
|
'g726': true,
|
||
|
'm4ae': true,
|
||
|
'mha1': true,
|
||
|
'mha2': true,
|
||
|
'mhm1': true,
|
||
|
'mhm2': true,
|
||
|
'mlpa': true,
|
||
|
'mp4a': true,
|
||
|
'raw ': true,
|
||
|
'Opus': true,
|
||
|
'samr': true,
|
||
|
'sawb': true,
|
||
|
'sawp': true,
|
||
|
'sevc': true,
|
||
|
'sqcp': true,
|
||
|
'ssmv': true,
|
||
|
'twos': true,
|
||
|
'ulaw': true
|
||
|
},
|
||
|
video: {
|
||
|
'avc1': true,
|
||
|
'avc2': true,
|
||
|
'avc3': true,
|
||
|
'avc4': true,
|
||
|
'avcp': true,
|
||
|
'drac': true,
|
||
|
'dvav': true,
|
||
|
'dvhe': true,
|
||
|
'encv': true,
|
||
|
'hev1': true,
|
||
|
'hvc1': true,
|
||
|
'mjp2': true,
|
||
|
'mp4v': true,
|
||
|
'mvc1': true,
|
||
|
'mvc2': true,
|
||
|
'mvc3': true,
|
||
|
'mvc4': true,
|
||
|
'resv': true,
|
||
|
'rv60': true,
|
||
|
's263': true,
|
||
|
'svc1': true,
|
||
|
'svc2': true,
|
||
|
'vc-1': true,
|
||
|
'vp08': true,
|
||
|
'vp09': true
|
||
|
}
|
||
|
};
|
||
|
|
||
|
export type CodecType = 'audio' | 'video';
|
||
|
|
||
|
function isCodecType (codec: string, type: CodecType): boolean {
|
||
|
const typeCodes = sampleEntryCodesISO[type];
|
||
|
return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;
|
||
|
}
|
||
|
|
||
|
function isCodecSupportedInMp4 (codec: string, type: CodecType): boolean {
|
||
|
return MediaSource.isTypeSupported(`${type || 'video'}/mp4;codecs="${codec}"`);
|
||
|
}
|
||
|
|
||
|
export { isCodecType, isCodecSupportedInMp4 };
|