繁体   English   中英

使用libmp3lame / liblame / lame将单声道PCM文件编码为MP3

[英]Encode mono PCM file to MP3 with libmp3lame/liblame/lame

查看libmp3lame的API,所有功能:

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                        */

就是这种情况,尽管可以选择单声道而不是立体声。 使用:

lame_set_mode(lame,MPEG_mode_e::MONO);

但是,如何获得libmp3lame来获取MONO PCM数据并编码单声道mp3音频? 如果我没有第二个渠道,该使用哪种正确的API?

看起来您需要将mode设置为MONO,将通道数设置为1( lame_set_num_channels ),并且将lame_encode_buffer与“左”缓冲区中的PCM数据一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM