有没有LAME c ++ wraper\simplifier(在Linux Mac上工作,从纯代码中获胜)?

Rel*_*lla 12 c c++ cross-platform wrapper lame

所以我想创建简单的pcm到mp3 C++项目.我希望它使用LAME.我喜欢LAME,但它真的是biiig.所以我需要某种OpenSource,使用纯粹的代码和纯粹的蹩脚代码工作流简化器.所以说我用PCM和DEST文件给它文件.打电话给像

LameSimple.ToMP3(file with PCM, File with MP3 , 44100, 16, MP3, VBR);

矿石这样的东西在4-5行(应该存在的例子)和我有我需要的vhat应该是轻,简单,powerfool,opensource,crossplatform.

有这样的事吗?!?

Mik*_*our 44

Lame确实不难使用,尽管如果你需要它们,还有很多可选的配置功能.编码文件需要略多于4-5行,但不多.这是一个合作的例子(只是基本功能,没有错误检查):

#include <stdio.h>
#include <lame/lame.h>

int main(void)
{
    int read, write;

    FILE *pcm = fopen("file.pcm", "rb");
    FILE *mp3 = fopen("file.mp3", "wb");

    const int PCM_SIZE = 8192;
    const int MP3_SIZE = 8192;

    short int pcm_buffer[PCM_SIZE*2];
    unsigned char mp3_buffer[MP3_SIZE];

    lame_t lame = lame_init();
    lame_set_in_samplerate(lame, 44100);
    lame_set_VBR(lame, vbr_default);
    lame_init_params(lame);

    do {
        read = fread(pcm_buffer, 2*sizeof(short int), PCM_SIZE, pcm);
        if (read == 0)
            write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);
        else
            write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);
        fwrite(mp3_buffer, write, 1, mp3);
    } while (read != 0);

    lame_close(lame);
    fclose(mp3);
    fclose(pcm);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 我用gcc lametest.c -lmp3lame在Ubuntu Linux上构建了它(使用sudo apt-get install libmp3lame-dev安装库和头文件之后)。恐怕我不知道如何在Mac和Windows上安装和链接库。 (2认同)

tro*_*vel 7

受 Mike Seymour 回答的启发,我创建了一个纯 C++ 包装器,它允许仅用 2 行代码对 WAV 和 MP3 文件进行编码/解码

convimp3::Codec::encode( "test.wav", "test.mp3" );
convimp3::Codec::decode( "test.mp3", "test_decoded.wav" );
Run Code Online (Sandbox Code Playgroud)

无需担心采样率、字节率和通道数——这些信息是在编码/解码过程中从 WAV 或 MP3 文件中获得的。

该库不使用旧的 C i/o 函数,而仅使用 C++ 流。我觉得它更优雅。

为方便起见,我在 LAME 上创建了一个非常薄的 C++ 包装器并将其称为 lameplus 和一个用于从 WAV 文件中提取采样信息的小型库。

所有文件都可以在这里找到:

编码/解码:https : //github.com/trodevel/convimp3

跛脚:https : //github.com/trodevel/lameplus

wav 处理:也在 github 上,存储库是wave