views:

513

answers:

1

So I want to create simple pcm to mp3 C++ project. I want it to use LAME. I love LAME but It is realy biiig. so I need some kind of OpenSource working from pure code with pure lame code workflow simplifier. So to say I give it File with PCM and DEST file. Call something like

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

ore such thing in 4 - 5 lines (examples ofcourse should exist) and I have vhat I needed It should be light, simple, powerfool, opensource, crossplatform.

Is there any thing like this?!?

+3  A: 

Lame really isn't difficult to use, although there are a lot of optional configuration functions if you need them. It takes slightly more than 4-5 lines to encode a file, but not much more. Here is a working example I knocked together (just the basic functionality, no error checking):

#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;
}
Mike Seymour
please, could you share a project file, I realy do not undestan something - how to connect LAME to your CPP project, please help
Blender
I built it on Ubuntu linux with `gcc lametest.c -lmp3lame` (after installing the library and header files with `sudo apt-get install libmp3lame-dev`). I've no idea how to install and link with libraries on Mac and Windows, I'm afraid.
Mike Seymour
Ser Please would you mind sharing some links (or, better direct instructions) for installing Lame for developers on linux.
Blender
btw post your answer here http://stackoverflow.com/questions/2419928/where-to-get-pure-c-lame-mp3-encoder-pcm-to-mp3-example win 100 bounty=) thank you WWmuch for this code example.
Blender
On Ubuntu, Debian, or other apt-based distribution, open a shell and type `sudo apt-get install libmp3lame-dev`. Otherwise, use your distribution's package manager to search for something like that, or download the source from http://sourceforge.net/projects/lame/files/ and follow whatever instructions you find there to build and install it.
Mike Seymour