Кодировать моно файл PCM в MP3 с помощью libmp3lame / liblame / lame

Глядя на API libmp3lame, все функции:

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 для приема данных MONO PCM и кодирования монофонического mp3-звука? Какой API использовать для этого, если у меня нет второго канала?

2

Решение

Похоже, вам нужно установить режим на MONO, установить количество каналов на 1 (lame_set_num_channels) и использовать lame_encode_buffer с данными PCM в «левом» буфере.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]