hjplayer
Version:
hjplayer, a HTML5 Player, can play flv and hls by Media Source Extension, based on typescript;
298 lines (296 loc) • 8.35 kB
text/typescript
class AAC {
static getSilentFrame(codec?: string, channelCount?: number) {
if(codec === 'mp4a.40.2') {
// handle LC-AAC
if(channelCount === 1) {
return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);
} if(channelCount === 2) {
return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);
} if(channelCount === 3) {
return new Uint8Array([
0x00,
0xc8,
0x00,
0x80,
0x20,
0x84,
0x01,
0x26,
0x40,
0x08,
0x64,
0x00,
0x8e
]);
} if(channelCount === 4) {
return new Uint8Array([
0x00,
0xc8,
0x00,
0x80,
0x20,
0x84,
0x01,
0x26,
0x40,
0x08,
0x64,
0x00,
0x80,
0x2c,
0x80,
0x08,
0x02,
0x38
]);
} if(channelCount === 5) {
return new Uint8Array([
0x00,
0xc8,
0x00,
0x80,
0x20,
0x84,
0x01,
0x26,
0x40,
0x08,
0x64,
0x00,
0x82,
0x30,
0x04,
0x99,
0x00,
0x21,
0x90,
0x02,
0x38
]);
} if(channelCount === 6) {
return new Uint8Array([
0x00,
0xc8,
0x00,
0x80,
0x20,
0x84,
0x01,
0x26,
0x40,
0x08,
0x64,
0x00,
0x82,
0x30,
0x04,
0x99,
0x00,
0x21,
0x90,
0x02,
0x00,
0xb2,
0x00,
0x20,
0x08,
0xe0
]);
}
} else {
// handle HE-AAC (mp4a.40.5 / mp4a.40.29)
if(channelCount === 1) {
// ffmpeg -y -f lavfi -i "aevalsrc=0:d=0.05" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
return new Uint8Array([
0x1,
0x40,
0x22,
0x80,
0xa3,
0x4e,
0xe6,
0x80,
0xba,
0x8,
0x0,
0x0,
0x0,
0x1c,
0x6,
0xf1,
0xc1,
0xa,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5e
]);
} if(channelCount === 2) {
// ffmpeg -y -f lavfi -i "aevalsrc=0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
return new Uint8Array([
0x1,
0x40,
0x22,
0x80,
0xa3,
0x5e,
0xe6,
0x80,
0xba,
0x8,
0x0,
0x0,
0x0,
0x0,
0x95,
0x0,
0x6,
0xf1,
0xa1,
0xa,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5e
]);
} if(channelCount === 3) {
// ffmpeg -y -f lavfi -i "aevalsrc=0|0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
return new Uint8Array([
0x1,
0x40,
0x22,
0x80,
0xa3,
0x5e,
0xe6,
0x80,
0xba,
0x8,
0x0,
0x0,
0x0,
0x0,
0x95,
0x0,
0x6,
0xf1,
0xa1,
0xa,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5a,
0x5e
]);
}
}
return null;
}
}
export default AAC;