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 msix packaging tool打包问题
    • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
    • ¥15 python的qt5界面
    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线