Глядя на API из libmp3lame, все функции:Encode файл моно PCM в MP3 с libmp3lame/liblame/хромой
1- или взять левый и правый каналы, как этот:
int CDECL lame_encode_buffer (
lame_global_flags* gfp, /* global context handle */
const short int buffer_l [], /* PCM data for left channel */
const short int buffer_r [], /* PCM data for right channel */
const int nsamples, /* number of samples per channel */
unsigned char* mp3buf, /* pointer to encoded MP3 stream */
const int mp3buf_size); /* number of valid octets in this
stream */
2- Возьмите чередующиеся данные, например:
int CDECL lame_encode_buffer_interleaved(
lame_global_flags* gfp, /* global context handlei */
short int pcm[], /* PCM data for left and right
channel, interleaved */
int num_samples, /* number of samples per channel,
_not_ number of samples in
pcm[] */
unsigned char* mp3buf, /* pointer to encoded MP3 stream */
int mp3buf_size); /* number of valid octets in this
stream */
Это случай, хотя вместо стерео можно выбрать MONO. Использование:
lame_set_mode(lame,MPEG_mode_e::MONO);
Но как я могу получить libmp3lame принимать данные PCM моно и кодировать моно mp3 аудио? Какой правильный API использовать для этого, если у меня нет второго канала?
Благодарим за отзыв. Так что я должен держать буфер для пустого пустого? Я попробую. Но не могли бы вы рассказать мне, как вы это знаете? –
Мне пришлось искать его в хромых источниках; В этом отношении документы Lame (in-header) «не очень полезны». –