|
使用CODECs压缩Wave音频
概要
微软的Win95和WinNT操作系统都包含有能够压缩解压缩Wave音频流的CODECs。将你的wave 音频以压缩形式保存不但能够减少对存储空间的需求,在网络上传送时也能减少数据传输 的时间。
本文及其附带的实例代码告诉你怎样使用安装在Windows系统中的CODECs来压缩和解压缩音 频。稍稍改变这些代码就可以用作解压缩经过压缩的数据,执行数据格式转换。 所附实例代码是用Microsoft Visual C++ 5.0版本开发的,并在Win95和WinNT 4.0操作系 统上测试过。
简介
Win95及最近的WinNT都具有能过安装的CODECs处理压缩的wave格式的音频和视频数据流的 能力。
一个CODEC是一小段用于压缩(COmpress)及解压缩(DECompress)数据流的代码(因此, 得名CO-DEC)。许多CODECs即能压缩又能解压缩。而一些CODECs仅能用于解压缩,这样私 有数据可以在系统上播放,但数据格式不能在系统上创建。
尽管一个CODEC原则上能够用于压缩解压缩任一种数据流,还是设计有各种各样的CODECs 以实现以高的压缩比率,更好的保真度或实时压缩性能来压缩某种数据类型。例如,获取 高的视频压缩数据压缩率的最好方法应用于音频数据时未必就能得到相同的效果,反之也 然。
本文着重于怎样在自己的代码中使用CODEC将音频数据以你的系统中CODECs所支持的方式进 行压缩。压缩音频数据的一个主要原因是降低存储某一声音序列所需数据量。少的数据量 意味着声音所占有的空间更少,并且能够以更快的速度在MODEM和网络上传递。如果数据 以Windows系统所支持的某一通用格式压缩的话,则可以不必手工解压缩就直接播放--系 统将使用它自己的CODECs解压缩数据并播放。
我的系统中有什么CODECs?
Win95和WinNT本身附带有几种标准的CODECs,也可由系统中所安装的应用程序安装其他的 CODECs。例如,DSP Group,Inc. TrueSpeech CODEC随Win95发送,因此你写的任何应用于 Win95的程序都可应用此CODEC(假如用户没有在控制面板中删除它或禁止它的话)。以后 可能要安装的CODEC的一个例子是微软网络(MSN)软件自已所用的音频数据。
所有安装的CODECs由音频压缩管理器(ACM)管理。我们可以从一小程序中查询ACM来查到安 装了哪些CODECs,它们都支持什么格式。你也可双击控制面板中的多媒体选项,选择高级 标签,就能看到系统中所安装的CODECs。
介绍应用ACM,得知它所管理每一个CODEC都可以做些什么的一个好方法是写一个简单的 查询ACM的命令行应用程序。本文所附带的CAPS程序完成的就是这个功能--让我们看看它的 代码,我将给你一起分析此程序,解释每一步完成的什么功能。
首先从调用ACM编程接口所需的包含的头文件开始 :
#include <windows.h>
#include <mmsystem.h>
#include <mmreg.h> // 多媒体注册
#include <msacm.h> // 音频压缩管理器
#include <stdio.h>
|