想在windows下使用speex库压缩音频文件 代码使用speex文档中附录A的代码 只是把其中的文件路径修改了 但是编码之后的文件大小只用2K 原文件900K左右,而且解码后无法播放,全是杂音,请问是怎么回事 编码文件是PCM格式的。
代码如下
#include
#include
#include
#include
#define FRAME_SIZE 160
void main()
{
FILE *fin,*fout;
short in[FRAME_SIZE];
float input[FRAME_SIZE];
char cbits[200];
int nbBytes;
void *state;
SpeexBits bits;
int i, tmp;
int test = 0;
state = speex_encoder_init(&speex_nb_mode);
tmp=8;
speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);
fin = fopen("D:/CODE/samplepcm/saima.pcm", "r");
fout = fopen("D:/CODE/samplepcm/saima.spx", "wb");
speex_bits_init(&bits);
while (1)
{
fread(in, sizeof(short), FRAME_SIZE, fin);
if (feof(fin))
break;
for (i=0;i<FRAME_SIZE;i++)
input[i]=in[i];
speex_bits_reset(&bits);
speex_encode(state, input, &bits);
nbBytes = speex_bits_write(&bits, cbits, 200);
fwrite(&nbBytes, sizeof(int), 1, fout);
fwrite(cbits, 1, nbBytes, fout);
}
speex_encoder_destroy(state);
speex_bits_destroy(&bits);
fclose(fin);
}