Re: Как закодировать PCM-аудио в AAC-формат с помощью ffmpeg-API
От: roro  
Дата: 20.06.13 17:46
Оценка:
Здравствуйте, Lexx47, Вы писали:

L>Я работаю над потоковым вещанием аудио и видео с веб камеры на rtmp-сервер. Код пишу под MacOS (в Xcode) поэтому для захвата аудио пользуюсь AVFoundation-framework'ом. Это аудио требуется на лету закодировать с помощью ffmpeg'a в AAC-формат (для совместимости с iOS-девайсами) и послать.


L>Камера отдает мне аудио в виде 16-бит PCM буферами по 512 семплов в каждом (причем не зависимо от выбранного на камере семлпрейта (выбрать можно 16, 24,32 и 48 кГц)). Если я беру эти данные и кодирую ААС енкодером настроенным на соответствующий семплрейт (через libfaac), то на выходе слышу сильно замедленный и прерывистый звук (как будто после каждого аудио фрейма добавляют кусок тишины).


Это очень странно, проверьте правильно ли вытаскивается буфер, там либо пакеты должны чаше приходить либо размер буфера не 512.

Для установки опций ресемплинга есть удобная функция swr_alloc_set_opts

вот тут вообще нипонятно,
L> int out_samples = av_rescale_rnd(swr_get_delay(swr, in_smprt) +in_samples, (int)audio_st->codec->sample_rate, in_smprt, AV_ROUND_UP);
av_rescale_rnd — Rescales a 64-bit integer with specified rounding.
а вы из нее вычитали количество семплов.

проверьте внимательно параметры, скорее всего ошибка в какой-нибудь мелочи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.