geaeU33 2014-06-07 11:56
浏览 929

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

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 用三极管设计—个共射极放大电路
    • ¥15 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮
    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 牛顿斯科特系数表表示