Аудио файлы 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 сэмплов / кадр

Другие вопросы по тегам