2 geaeuruz geaeuruz 于 2014.06.07 19:56 提问

windows下 vc6.0中使用speex库压缩音频文件

想在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);
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!