2012-12-03 4 views
4

У меня есть некоторые данные ADTS AAC из где-то (на самом деле он извлечен из демультиплексированного файла), и теоретически его нужно исправить закодированным. это выглядит следующим образом:AAC ADTS raw data странный заголовок

frame1:

94 ЕД A1 09 45 58 09 40 02 СА АА 85 D4 E5 C5 58 А9 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 CD50 07 CE 37 83 6E F0 01 18 АА A8 49 В2 8B 8F А1 37 17 1C 06 00 00 00 06 00 72

Frames2:

95 14 С2 0A А9 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 хх хх

примеры:

21 19 94 E1 ..

21 19 95 03 ..

....

Так что вы знаете, что делает этот заголовок значит?

ответ

5

Это как 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. Итак, все, и это не так в вашем примере.

В случае мультиплексоре раздел любой заголовок там было, возможно, придется сырец 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 был оригинальным.

+1

привет, спасибо за ваш ответ! Как я знаю из файла sdp, аудио должно быть 2 канала и 48 кГц. но как насчет других бит, кроме «001»? довольно странно, что каждый кадр имеет одинаковые 16 бит в заголовке. – user991800

+1

Привет, нет, это не странно. Первые 3 бита представляют собой идентификатор пары каналов (это постоянный), следующие 4 бита представляют собой тег канала (это также постоянный, возможно, нули), а затем 1 бит для обмена общей информацией между стереоканалами (это также, вероятно, всегда одно и то же значение) и т. д. и т. д. Таким образом, наличие этих битов одинаково от кадра к кадру очень распространено. – Danijel

0

Скорее всего, это формат mpeg4 latm. если запустить MediaInfo инструмент для проверки, он будет выводить, как показано ниже:

$mediainfo a.aac 
General 
Complete name       : a.aac 
Format         : LATM 
File size        : 821 KiB 
Overall bit rate mode     : Variable 

Audio 
Format         : AAC 
Format/Info        : Advanced Audio Codec 
Format profile       : HE-AACv2/HE-AAC/LC 
Bit rate mode       : Variable 
Channel(s)        : 2 channels/1 channel/1 channel 
Channel positions      : Front: L R/Front: C/Front: C 
Sampling rate       : 48.0 KHz/48.0 KHz/24.0 KHz 
Compression mode       : Lossy 

Такой формат обычно генерируется после ADTS заголовка удалены или из канала DTV. Передача данных DTV использует формат LATM для экономии полосы пропускания, поэтому нет заголовка ADTS, но для инициализации декодера используется некоторый буфер конфигурации кодека.

Смежные вопросы