HydrogenAudio

Lossy Audio Compression => MP3 => MP3 - General => Topic started by: 0x3333 on 2007-08-22 19:43:50

Title: Raw Streaming to MP3
Post by: 0x3333 on 2007-08-22 19:43:50
Hi All!!

I'm new here and with audio things!

I have a RAW audio(8Khz, 8bits) streaming, and I need to encode that to MP3, but I can't encode that when streaming finish... because of streaming length... it can be only 1 minute or more than 5 hours...

So I need to encode that RAW streaming to MP3.

I'm using Java as plataform.

I'm thinking to use Lame reading from StdIn and java writing to that but still no success.

Thanks all!

Tercio.
Title: Re: Raw Streaming to MP3
Post by: jeanplus on 2020-01-09 18:12:25
I'm having the same issue .. has this ever been resolved in code ?
my conversion goes from raw to MP3
I attached input and output images (notice the output is really distorted)

My platform is C on ubuntu 1804LTS .. this is the conversion code
 int read, write;
    FILE *pcm = fopen("./input.raw", "rb");
    FILE *mp3 = fopen("./convertedFile.mp3", "wb");
    int n_bytes_read;
    int n_bytes_write;
    int i;
#define PCM_BUF_SIZE 1024
#define MP3_SIZE 8192

    short pcm_buffer_s[PCM_BUF_SIZE];
    unsigned char pcm_buffer[PCM_BUF_SIZE];   
    unsigned char mp3_buffer[MP3_SIZE];

    lame_global_flags *lame;
    //lame_t lame = lame_init();
    lame = lame_init();
    lame_set_num_channels(lame, 1);
    lame_set_in_samplerate(lame, 8000);
    lame_set_analysis(lame, 1);// debug .. get statistics data
    lame_set_errorf(lame, my_debugf);// debug .. get logging out of lame
    lame_set_msgf(lame, my_debugf);// debug .. get logging out of lame
    // from audacity
    lame_set_error_protection(lame, 0);
    lame_set_out_samplerate(lame,8000);
    lame_set_disable_reservoir(lame,0);
    lame_set_bWriteVbrTag(lame,1);
    lame_set_preset(lame, 1007);//standard quality and fast
    lame_set_VBR(lame, vbr_off);
    // end from audacity


    lame_set_mode(lame,MONO);
    int ret = lame_init_params(lame);
    if (ret >=0)
    {
        // print configuration
        lame_print_config(lame);

        do {
            n_bytes_read = fread(pcm_buffer, sizeof(char), PCM_BUF_SIZE, pcm);
            for (i = 0; i < n_bytes_read; i++) {
                pcm_buffer_s = (short)(pcm_buffer - 0x80) << 8;
            }
            if (n_bytes_read == 0) {
                n_bytes_write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);
               
            } else {
                n_bytes_write = lame_encode_buffer(lame, pcm_buffer_s, NULL, n_bytes_read, mp3_buffer, MP3_SIZE);

            }
            fwrite(mp3_buffer, sizeof(char), n_bytes_write, mp3);
        } while (n_bytes_read > 0);
        lame_close(lame);
        fclose(mp3);
        fclose(pcm);

        return 0;
    } else { printf("failed to initialize lame\n"); }