要计算未压缩声音所需的储存空间,可用以秒为单位的声音持续时间乘以取样 频率。如果用16位样本而不是8位样本,则将其加倍,如果是录制立体声则再加倍。例如,1小时的CD声音(或者是在每个立体声样本占2字节、每秒44 ,100个样本的速度下进行3 600秒)需要635MB,这快要接近一张 CD-ROM的储存量了。对于第一个关于波形声音的练习,我们不打算将声音储存到文件中或播放录制的声音。我们将使用低阶的波形声音API(即,前缀是 waveOut的函数)来建立一个称作SINEWAVE的声音正弦波生成器。此程序以1 Hz的增量来生成从20Hz(人可感觉的最低值)到5,000Hz(与人感觉的最高值相差两个八度音阶)的正弦波。我们知道,标准C执行时期链接库包括了一个sin函数,该 函数传回一个弧度角的正弦值(2π弧度等于360度)。sin函数传回值的范围是从-1到1(早在第五章,我们就在SINEWAVE程序中使用过这个函数)。因此,应该很容易使用sin函数生成输出到波形声音硬件的正弦波数据。基本上是用代表波形(这时是正弦波)的数据来填充 缓冲区,并将此缓冲区传递给API。(这比前面所讲的稍微有些复杂,但我将详细介绍)。波形声音硬件播放完 缓冲区中的数据后,应将第二个缓冲区中的数据传递给它,并且以此类推。第一次考虑这个问题(而且对PCM也一无所知)时,您大概会认为将一个周期的正弦波分成若干固定数量的样本-例如360个-才合理。对于20 Hz的正弦波,每秒输出7,200个样本。对于200 Hz的正弦波,每秒则要输出72,000个样本。这有可能实作,但实际上却不能这么做。对于5,000 Hz的正弦波,就需要每秒输出1,800,000个样本,这的确会增大DAC的负担!更重要的是,对于更高的 频率,这种作法会比实际需要的精确度还高。就 脉冲编码调制而言,取样 频率是个常数。假定取样 频率是SINEWA VE程序中使用的11,025Hz。如果要生成一个2,756.25Hz(确切地说是四分之一的取样 频率)的正弦波,则正弦波的每个周期就有4个样本。对于25Hz的正弦波,每个周期就有441个样本。通常,每周期的样本数等于取样 频率除以要得到的正弦波频率。一旦知道了每周期的样本数,用2π弧度除以此数,然后用sin函数来获得每周期的样本。然后再反复对一个周期进行取样,从而建立一个连续的波形。问题是每周期的样本数可能带有小数,因此在使用时这种方法并不是很好。每个周期的尾部都会有间断。使它正常工作的关键是保留一个静态的「相位角」变数。此角初始化为0。第一个样本是0度正弦。随后,相位角增加一个值,该值等于2π乘以 频率再除以取样频率。用此相位角作为第二个样本,并且按此方法继续。一旦相位角超过2π弧度,则减去2π弧度,而不要把相位角再初始化为0。例如,假定要用11,025Hz的取样 频率来生成1,000Hz的正弦波。即每周期有大约11个样本。为便于理解,此处相位角按度数给出-大约前一个半周期的相位角是:0、32.65、65.31、97.96、130.61、163.27、195.92、228.57、261.22、293.88、326.53、359.18、31.84、64.49、97.14、129.80、162.45、195.10,以此类推。存入 缓冲区的波形数据是这些角度的正弦值,并已缩放到每样本的位数。为后来的 缓冲区建立数据时,可继续增加最后的相位角,而不要将它初始化为0。记录声音采样点数据的文件叫做“波形声音”文件。波形声音构件专门用于WAV类型声音文件的播放。波形声音与 音响构件的区别在于,它只用于播放 WAV类型。● AVI格式:它的英文全称为Audio Video Interleaved,即 音频视频交错格式。它于1992年被Microsoft公司推出,随Windows3.1一起被人们所认识和熟知。所谓“音频视频交错”,就是可以将视频和音频交织在一起进行同步播放。这种 视频格式的优点是 图像质量好,可以跨 多个平台使用,其缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本Windows 媒体播放器播放不了采用早期编码编辑的AVI格式视频,而低版本Windows媒体播放器又播放不了采用最新编码编辑的AVI格式视频,所以我们在进行一些AVI格式的视频播放时常会出现由于 视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题,如果用户在进行AVI格式的视频播放时遇到了这些问题,可以通过下载相应的解码器来解决。● nAVI格式:nAVI是newAVI的缩写,是一个名为ShadowRealm的地下组织发展起来的一种新 视频格式(与我们上面所说的AVI格式没有太大联系)。它是由Microsoft ASF压缩算法的修改而来的,但是又与下面介绍的 网络影像视频中的ASF 视频格式有所区别,它以牺牲原有ASF视频文件视频“流”特性为代价而通过增加帧率来大幅提高ASF视频文件的清晰度。● DV-AVI格式:DV的英文全称是Digital Video Format,是由索尼、松下、JVC等多家厂商联合提出的一种家用数字 视频格式。目前流行的数码摄像机就是使用这种格式记录视频数据的。它可以通过电脑的IEEE 1394端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。这种 视频格式的 文件扩展名一般是. avi,所以也叫DV-AVI格式。● MPEG格式:它的英文全称为Moving Picture Expert Group,即 运动图像专家组格式,家里常看的VCD、SVCD、DVD就是这种格式。MPEG 文件格式是运动图像压缩算法的国际标准,它采用了 有损压缩方法减少运动图像中的冗余信息,说的更加明白一点就是MPEG的压缩方法依据是相邻两幅画面绝大多数是相同的,把后续图像中和前面图像有冗余的部分去除,从而达到压缩的目的(其最大压缩比可达到200:1)。MPEG格式有三个压缩标准,分别是MPEG-1、MPEG-2、和MPEG-4,另外,MPEG-7与 MPEG-21仍处在研发阶段。MPEG-1:制定于1992年,它是针对1.5Mbps以下数据传输率的数字存储媒体运动图像及其伴音编码而设计的国际标准。也就是我们通常所见到的VCD制作格式。使用 MPEG-1的压缩算法,可以把一部120分钟长的电影压缩到1.2GB左右大小。这种视频格式的 文件扩展名包括. mpg、.mlv、. mpe、. mpeg及 VCD 光盘中的. dat文件等。MPEG-2:制定于1994年,设计目标为高级工业标准的图像质量以及更高的传输率。这种格式主要应用在DVD/SVCD的制作(压缩)方面,同时在一些HDTV(高清晰电视广播)和一些高要求 视频编辑、处理上面也有相当的应用。使用 MPEG-2的压缩算法,可以把一部120分钟长的电影压缩到4到8GB的大小。这种视频格式的文件扩展名包括. mpg、. mpe、. mpeg、.m2v及DVD 光盘上的.vob文件等。