我使用下面的代码将声音文件转换为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);
}
答案 0 :(得分:2)
使用libsndfile无法设置特定的比特率。设置一个特定的恒定比特率通常是一个坏主意,因为恒定比特率对于sonf的某些部分可能太低而对于其他部分来说太高了。
使用libsndfile,您可以设置各种压缩级别,这些级别始终使用可变比特率。请参阅:http://www.mega-nerd.com/libsndfile/command.html#SFC_SET_VBR_ENCODING_QUALITY