设置libsndfile库生成的ogg文件的比特率

时间:2013-05-10 00:11:52

标签: c++ audio libsndfile

我使用下面的代码将声音文件转换为ogg vorbis,但我没有在libsndfile文档中找到如何设置输出文件的比特率,该文件的比特率始终设置为128 kb / s。是否可以更改libsndfile生成的输出文件的比特率?

#include <sndfile.hh>

#define BUFFER_LEN 4096

void convert(char *infilename, char *outfilename)
{
    static double data[BUFFER_LEN];
    SNDFILE *infile, *outfile;
    SF_INFO sfinfo;
    int readcount;

    infile = sf_open(infilename, SFM_READ, &sfinfo);
    sfinfo.format = SF_FORMAT_OGG | SF_FORMAT_VORBIS;
    outfile = sf_open(outfilename, SFM_WRITE, &sfinfo);

    while ((readcount = sf_read_double(infile, data, BUFFER_LEN)))
    {
        sf_write_double(outfile, data, readcount);
    }

    sf_close(infile);
    sf_close(outfile);
}

1 个答案:

答案 0 :(得分:2)

使用libsndfile无法设置特定的比特率。设置一个特定的恒定比特率通常是一个坏主意,因为恒定比特率对于sonf的某些部分可能太低而对于其他部分来说太高了。

使用libsndfile,您可以设置各种压缩级别,这些级别始终使用可变比特率。请参阅:http://www.mega-nerd.com/libsndfile/command.html#SFC_SET_VBR_ENCODING_QUALITY