Аудио файлы AAC воспроизводятся быстрее обычной
Я сэмплировал необработанные данные PCM с устройства, закодировал их через libfaac в аудиофайл в формате ".aac" (формат ADTS), и когда я сэмплировал их в 16 кГц или 41 кГц, закодированный файл ".aac" воспроизводился быстрее, чем обычно. В чем причина?
Конфигурация параметров выглядит следующим образом:
pConfiguration->inputFormat = FAAC_INPUT_16BIT;
pConfiguration->outputFormat = 1; /*0 - raw; 1 - ADTS*/
pConfiguration->bitRate = 16000;
pConfiguration->useTns = 0;
pConfiguration->allowMidside = 1;
pConfiguration->shortctl = SHORTCTL_NORMAL;
pConfiguration->aacObjectType = LOW;
pConfiguration->mpegVersion = MPEG4;
//pConfiguration->useLfe = 1;
1 ответ
Проблема была решена:
Я потерял необработанные данные PCM некоторого фрейма данных, я использую процессор HISI3516EV100, используя HISI SDK, проблема заключалась в том, что я конфигурировал параметры данных PCM, частоту дискретизации в случае 16000 Гц, точки выборки кадра данных PCM установлены на 160 выборок / кадр, это приведет к производству 16000/160 = 100 кадров в секунду, частота кадров слишком высока, каждый кадр данных PCM мне нужно вызывать функцию обработки для кодирования AAC, это вызовет много функций в стеке, почти 1000/100 = 10 мс необходимо завершить один кадр данных PCM для вызова интерфейса кодирования AAC, частота слишком высока, а библиотека libfaac потребляет немного ресурсов ЦП, что приводит к потере кадров (исходный кадр данных PCM частично потерян), так что в случае частичной потери исходных данных PCM закодированные данные AAC будут воспроизводиться быстрее, чем обычно.
Решение: увеличить длину кадра PCM до 160 сэмплов / кадр --->480 сэмплов / кадр