问题描述
- windows下 vc6.0中使用speex库压缩音频文件
-
想在windows下使用speex库压缩音频文件 代码使用speex文档中附录A的代码 只是把其中的文件路径修改了 但是编码之后的文件大小只用2K 原文件900K左右,而且解码后无法播放,全是杂音,请问是怎么回事 编码文件是PCM格式的。代码如下
#include
#include
#include
#include
#define FRAME_SIZE 160void 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);
}
时间: 2024-11-03 06:02:52