Это для понимания структуры файла aac
Для простоты мы можем принять файл m4a только с аудио aac (то есть без видео)
Я сравниваю файл m4a и файл aac, созданный из файла m4a, используя библиотеку faac
Ниже приведен скриншот сравнения уровня байтов двух файлов:
верхняя часть - файл m4a, а нижняя часть - файл aac
Для самого первого кадра из нижней части заголовок AAC ADTS равен FF F9 4C 80 12 3F FC
, а с здесь и здесь фактические аудиоданные aac должны иметь 138 байтов
Из нижней части видно, что байты от DE
до 80
соответствуют блоку данных в верхнем окне (зеленая часть)
Я предположил, что нашел смещение в файле m4a, откуда хранятся фактические аудиоданные aac. Я думал, что байты 21 4C ...
в верхнем окне содержали все байты следующего кадра аудио-файла, и если мы посмотрим на нижнее окно, мы действительно можем увидеть, что ... a3 80
(конец зеленой части в нижнее окно) сопровождается другим заголовком ADTS (FF F9 4C 80 12 1F FC
, который говорит, что количество аудио в следующем кадре aac должно быть 137 байтов)
Однако байты, считанные из файла aac, не совпадают с байтами в файле m4a, как ожидалось, как показано на снимке экрана ниже:
Они совпадают до определенной точки, но все после этого выглядит случайным.
Какова связь между файлом m4a и соответствующим файлом aac, созданным из него, на уровне байтов?
Основная цель состоит в том, чтобы иметь возможность изменить этот проект Matlab (который принимает входные данные m4a и декодирует их в необработанные данные WAV), чтобы считывать аудиоданные AAC непосредственно из файла AAC, а затем использовать функции декодера AAC из этот проект Matlab без изменений.