Установить битрейт ogg-файла, сгенерированного библиотеками libsndfile
Я использовал приведенный ниже код для преобразования звуковых файлов в ogg vorbis, но я не нашел в документации libsndfile, как установить битрейт выходного файла, который всегда равен 128 кбит / с. Можно ли изменить битрейт выходного файла, сгенерированного 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 ответ
В libsndfile нет возможности установить конкретную скорость передачи данных. Установка конкретной постоянной скорости передачи битов обычно является плохой идеей, поскольку постоянная скорость передачи битов, вероятно, будет слишком низкой для некоторых частей звукового сигнала и слишком высокой для других частей.
Однако с помощью libsndfile вы можете установить различные уровни сжатия, которые всегда используют переменный битрейт. Смотрите: http://www.mega-nerd.com/libsndfile/command.html