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

问题描述

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

时间: 2024-11-03 06:02:52

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

vc6 0 extern 问题2个-vc6.0 中extern使用时遇到的2个疑问,还望诸位帮忙看下,多谢

问题描述 vc6.0 中extern使用时遇到的2个疑问,还望诸位帮忙看下,多谢 我在文件1CTestHello.cpp 声明了 extern void delete_string(char a[],char b[],char standard); 再调用文件2 file2.c中的delete_string(a,b,Standard);函数: 发现2个问题: 问题1:用extern实验发现必须用include,但查找资料,没有说这两个有必然关联.请问到底有没有必然关联?下面是实验: 如果文件1中

vc++-在vc6.0中,按下按钮1之后才可以按按钮2该怎么实现

问题描述 在vc6.0中,按下按钮1之后才可以按按钮2该怎么实现 如题,当按下按钮1之后才可以按钮2,而按钮1没按时按按钮2是没反应的 解决方案 初始化的时候,按钮一可用设置true , 按钮二可用设置 false : 在按钮一的点击事件中 设置按钮二可用为true : 解决方案二: 有enable和disable属性可以设置 解决方案三: 基于VC++ PNG按钮的实现[2]基于VC++ PNG按钮的实现[1] 解决方案四: 先把按钮2的"可用"设为false,按1按钮之后再把2按钮

快速掌握VC6.0中各种宏注释应用(附图)_C 语言

为了方便别人或自己阅读自己的程序,注释是坚决不可少的.一个漂亮的程序,不是在于你应用的技术多么高深,而是能够把高深的技术描述的清楚易懂. 在Java的IDE环境--Eclispe中,有很多中注释的,并且设置注释也是很方便的,因为现在从事C++,嘻嘻,Eclispe已经卸载,至于设置注释的地方,直接百度或谷歌即可. 所以嘛,习惯了Eclispe的注释,所以想法设法,在VC6.0中尝试.当对于一个陌生的东西而言,如何熟悉他呢,就是拿你现在已有的知识,去联想.比如Java中截取字符串,或解析xml等,

.NET 2.0中的企业库异常处理块

  .NET 2.0中的企业库异常处理块              企业库异常处理块(Enterprise Library Exception Handling Block)提供了处理异常所需的所有基本代码,现在,你可以不用再编写这些重复性的异常处理代码,只需简单地在程序中使用它们,就可保证一致且高效地异常处理.              在一个理想的程序世界中,编写的所有代码都是运行无误的,但现实是,无论你在编写代码时多么地小心,错误总会发生,所以,必须要有一个高效.可配置的框架(framew

win7下vc6.0的安装

在win下用C++编程,很多新手都用VC6.0.winxp下的安装应该说问题是比较少的,win7下则有些小问题需解决.本人从网上找到些文章作为参考,加上自己的安装经验,总结了win7下VC6.0的安装步骤.1.下载VC6.0完整版(绿色版显然功能不全,bug多多),地址:http://hi.baidu.com/jsj082.解压缩,双击setup.exe,安装方式选择custom而不是typical,Custom自定义安装里,点中Tools组件,更改选项,把其中的 OLE/Com Object

指令-VC6.0中dll创建失败,编译报错怎么处理

问题描述 VC6.0中dll创建失败,编译报错怎么处理 VC6.0环境,创建DCOM的服务器. 想要生成一个dll文件,在project setting里面输入了指令 然后就出现了编译错误 这个怎么破?求各位大神解答! 解决方案 -f是参数吧,中间缺少空格. 解决方案二: nmake命令路径是否正确,是否PATH环境变量中.跟参数之间要有空格.

c++-vc6.0中如何编译和执行由多个C++源文件组成的程序

问题描述 vc6.0中如何编译和执行由多个C++源文件组成的程序 程序分成几个不同部分的源文件,怎么导入一个工程中,新手求编译执行的步骤 解决方案 新建一个项目,然后在文件菜单添加源代码,把代码复制过来. 这些源代码本身要匹配. 如果要使用外部的函数,用extern声明. 如果代码没有问题,就可以编译. 解决方案二: 先在vc里建立一个 win32的控制台工程 然后将你的文件导入就应该可以了 解决方案三: 创建一个空项目,在"源文件"里面添加.cpp的文件,在"头文件&quo

坐标绘制-VC6.0 中 图形和坐标的绘制的简单问题,求救!!

问题描述 VC6.0 中 图形和坐标的绘制的简单问题,求救!! VC 6.0 中直接在单文档应用程序的View类视图上给绘制坐标轴应该在哪个函数里进行?并且要完成坐标和图形的重绘应该在哪个函数里进行??或者讲述一下OnDraw().OnPaint().OnInitialUpdate().OnEraseBkgnd(pDC)这几个函数的作用和在MFC中的调用顺序吧! 谢谢啦,不胜感激了!!! 解决方案 单文档应用程序的绘图是在OnDraw中完成的,把绘图的动作放在OnDraw中,把坐标计算可以放在外

c++ 单链表-单链表做电话本 在VC6.0中运行不了?

问题描述 单链表做电话本 在VC6.0中运行不了? /*用单链表的形式做成的电话本:功能:插入成员,删除成员,修改成员,搜索成员,输出整个链表*/ #include #include using namespace std; struct tel{ int number; char name[20]; tel *next;}; /*print the whole line*/ tel print(tel*head){ tel*p=new tel; p=head; while(p->next!=N