use*_*800 5 audio multimedia aac codec
我从某处获得了一些ADTS AAC原始数据(实际上是从解复用的文件中提取的),理论上它应该被纠正编码.它看起来像这样:
帧1:
21 19 94 ED A1 09 45 58 09 40 02 CA AA 85 D4 E5 C5 58 A9 73 00 0C 75 1C 5D A7 4E 52 40 90 38 71 9C 65 D5 C4 22 0B 28 7D EF F8 42 33 15 03 BA 6C DE B1 74 B4 A1 4E 0A 21 05 15 34 6B FD D9 E7 8F BF FF 79 5C D3 7D 90 79 F6 65 57 08 3A F7 C5 14 85 5E D7 C3 7D 2A 85 E1 7A 86 BA 3A AC 13 0D AE D1 1B 65 69 B6 71 92 E5 8A BC CB 5C 7A 6F D7 F2 2B 38 C9 0E 2A 40 2F 8E 90 9B 1F A2 3A 9C 39 A8 35 CE 69 14 CD 64 54 70 00 50 07 CE 37 83 6E F0 01 18 AA A8 49 B2 8B 8F A1 37 17 1C 06 00 00 00 06 00 72
Frames2:
21 19 95 14 C2 0A A9 61 19 8B CB 9B 56 AE A7 0A A0 34 DA EA D9 34 28 0C F8 DC 0C 30 97 12 A7 DD 3F F5 FE 7B 65 52 61 6D 7F DA BE D3 EB 30 CA A6 94 54 8E D4 0A 32 E1 EA FD AD 02 82 B5 1E 40 4C 04 3A BE 56 21 5D 7D 5D B3 31 2A 5D AF 4E FF A6 48 B9 42 E3 87 DE 5C 59 4B B9 BB C3 2C AD 50 6B 35 C8 24 6C 06 82 86 B2 26 17 E2 C6 DD 9A 43 53 91 D3 68 8D 67 8E 7D 0A 28 EB 7D F1 BB FC 56 5E 13 25 F9 77 E6 27 BF DA 4E 09 38 86 20 0A 00 F9 C6 F0 1D DE 00 21 05 4F 28 C0 A0 5F 0E 18 00 03 00 0E
.....
对于每个后续帧,有一个非常奇怪的类似标题:
21 19 xx xx
举些例子:
21 19 94 E1 ..
21 19 95 03 ..
....
所以你知道这个标题是什么意思吗?
这就是ADTS AAC的样子,例如立体声:
adts_header()
channel_pair_element()
adts_header()
channel_pair_element()
adts_header()
channel_pair_element()
adts_header()
channel_pair_element()
等等...
这似乎根本不是ADTS标题.ADTS标头通常不用于某些其他容器,如mp4,但仅用于独立的AAC文件.ADTS标头以12位同步字开始1111 1111 1111.所有这些,在你的例子中并非如此.
如果muxer剥离了任何标题,那么你可能有原始AAC,应该single_channel_element()在单声道或channel_pair_element()立体声的情况下开始.
single_channel_element() 从3位开始 000
cannel_pair_element() 从3位开始 001
你的样本0010 0001 0001 1001可能是这样开始的channel_pair_element().
您可能有立体声,但没有任何标题,如下所示:
channel_pair_element()
channel_pair_element()
channel_pair_element()
channel_pair_element()
等等
你应该让复用器告诉你通道的数量,采样率等,你就可以继续解码了.Muxer应该从mp4或您的AAC最初的容器中获取此信息.