【问题标题】:Encode mono PCM file to MP3 with libmp3lame/liblame/lame使用 libmp3lame/liblame/lame 将单声道 PCM 文件编码为 MP3
【发布时间】:2016-10-03 12:54:37
【问题描述】:

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

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

lame_set_mode(lame,MPEG_mode_e::MONO);

但是我怎样才能让 libmp3lame 获取 MONO PCM 数据并编码单声道 mp3 音频?如果我没有第二个频道,什么是正确的 API?

【问题讨论】:

    标签: c++ audio wav pcm lame


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。所以我应该把缓冲区留空吗?我会试试的。但是你能告诉我你是怎么知道的吗?
    • 我不得不在蹩脚的来源中查找它;在这方面,蹩脚(in-header)文档“不是很有帮助”。
    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2011-01-26
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多