2016-10-03 8 views
1

Глядя на 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 использовать для этого, если у меня нет второго канала?

ответ

2

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

+1

Благодарим за отзыв. Так что я должен держать буфер для пустого пустого? Я попробую. Но не могли бы вы рассказать мне, как вы это знаете? –

+1

Мне пришлось искать его в хромых источниках; В этом отношении документы Lame (in-header) «не очень полезны». –

 Смежные вопросы

  • Нет связанных вопросов^_^