Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | 1x 46x 46x | // 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 } }; function isCodecType (codec, type) { const typeCodes = sampleEntryCodesISO[type]; return !!typeCodes && typeCodes[codec.slice(0, 4)] === true; } function isCodecSupportedInMp4 (codec, type) { return MediaSource.isTypeSupported(`${type || 'video'}/mp4;codecs="${codec}"`); } export { isCodecType, isCodecSupportedInMp4 }; |