2

我使用下面的代码将声音文件转换为 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);
}
4

1 回答 1

2

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

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

于 2013-05-10T03:32:23.653 回答