кодирование мп3 с помощью библиотеки lame
От: echo85  
Дата: 06.03.07 16:50
Оценка:
занялся кодированием мп3 с помощью библиотеки lame.
кодер работает,но если менять установки битрейт и частоты дискретизации,то они в винампе показываются неизменными, по дефолту 128кбс и 44кГЦ,с чем это связано я никак не пойму.
Объясните,кто рабботал с этой билиотекой как правильно кодировать в мп3,я разбирался по исходникам ламовского кодера,и вроде бы все полезное и нужное вытащил,)

ниже код кодера.
int EncodeMp3(char* oFileName,//имя файла для записи
                      short *ldata,//массив значений для левого канала
                      short *rdata,//массив значений для правого  канала  
                      mp3data_struct *mp3data)//данные об мп3 файле
{
    int t= 0;
    FILE *ofn;
    int rd = 0;
    size_t ofs =0;
    unsigned char mp3buffer[LAME_MAXMP3BUFFER];
    short pcm_l[1152];
    short pcm_r[1152];
    lame_global_flags *gf;
    gf = lame_init();
    if(gf == NULL)
    {
        return 0;
    }
    if(lame_init_params(gf)<0)
    {
        return 0;
    }
    ofn = fopen(oFileName,"wb");

    lame_set_brate(gf, mp3data->bitrate);
    lame_set_out_samplerate(gf,mp3data->samplerate);
    cout <<" Starting ecncode -------------"<<endl;
    for(int i = 0;i < l;i+=1152)
    {
        for(int j = 0;j< 1152;j++)
        {
            pcm_l[j] = ldata[i+j];
            pcm_r[j] = rdata[i+j];
            t++;
        }
        rd = lame_encode_buffer(gf,pcm_l,pcm_r,mp3data->framesize,mp3buffer,0);
        fwrite(mp3buffer,1,rd,ofn);
        ofs+=rd;
    }
    lame_close(gf);
    fclose(ofn);
    return ofs;
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.