基于VisualC++6.0声音文件操.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于VisualC6.0声音文件操

2012必威体育精装版文档-管理系列 (word可编辑版) 基于Visual C++6.0的声音文件操作 当前计算机系统处理声音文件有两种办法:一是使用现成的软件,如微软的录音机、SoundForge、CoolEdit等软件可以实现对声音信号进行录音、编辑、播放的处理,但它们的功能是有限的,为了更灵活,更大限度地处理声音数据,就不得不使用另外一种方法,既利用微软提供的多媒体服务,在Windows环境下自己编写程序来进行声音处理来实现一些特定的功能。下面就开始介绍声音文件的格式和在Windows环境下使用Visual C++开发工具进行声音文件编程处理的方法。    一、实现方法    1、RIFF文件结构和WAVE文件格式    Windows支持两种RIFF(Resource Interchange File Format,资源交互文件格式)格式的音频文件:MIDI的RMID文件和波形音频文件格式WAVE文件,其中在计算机领域最常用的数字化声音文件格式是后者,它是微软专门为Windows系统定义的波形文件格式(Waveform Audio),由于其扩展名为*.wav,因而该类文件也被称为WAVE文件。为了突出重点,有的放矢,本文涉及到的声音文件所指的就是WAVE文件。常见的WAVE语音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。这里的采样率是指声音信号在进行模数转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。WAVE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。在进行声音编程处理以前,首先让我们来了解一下RIFF文件和WAVE文件格式。    RIFF文件结构可以看作是树状结构,其基本构成是称为块(Chunk)的单元,每个块有标志符、数据大小及数据所组成块的结构如图1所示:块的标志符(4BYTES)数据大小 (4BYTES)从上图可以看出,其中标志符为4个字符所组成的代码,如RIFF,LIST等,指定块的标志ID;数据大小用来指定块的数据域大小,它的尺寸也为4个字符;数据用来描述具体的声音信号,它可以由若干个子块构成,一般情况下块与块是平行的,不能相互嵌套,但是有两种类型的块可以嵌套子块,他们是RIFF或LIST标志的块,其中RIFF块的级别最高,它可以包括LIST块。另外,RIFF块和LIST块与其他块不同,RIFF块的数据总是以一个指定文件中数据存储格式的四个字符码(称为格式类型)开始,如WAVE文件有一个WAVE的格式类型。LIST块的数据总是以一个指定列表内容的4个字符码(称为列表类型)开始,例如扩展名为.AVI的视频文件就有一个strl的列表类型。RIFF和LIST的块结构如下:RIFF/LIST标志符数据1大小格式/列表类型RIFF/LIST块结构WAVE文件是非常简单的一种RIFF文件,它的格式类型为WAVE。RIFF块包含两个子块,这两个子块的ID分别是fmt和data,其中fmt子块由结构PCMWAVEFORMAT所组成,其子块的大小就是sizeofof(PCMWAVEFORMAT),数据组成就是PCMWAVEFORMAT结构中的数据。WAVE文件的结构如下图三所示:“WAVE”) “fmt” SIZEOF(PCMWAVEFORMAT) PCMWAVEFORMAT “date” 声音数据大小 声音数据 图3 WAVE文件结构PCMWAVEFORMAT结构定义如下:Typedef struct {   WAVEFORMAT wf;//波形格式;   WORD wBitsPerSample;//WAVE文件的采样大小; }PCMWAVEFORMAT; WAVEFORMAT结构定义如下: typedef struct {   WORD wFormatag;//编码格式,包括WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM等   WORD nChannls;//声道数,单声道为1,双声道为2;   DWORD nSamplesPerSec;//采样频率;   DWORD nAvgBytesperSec;//每秒的数据量;   WORD nBlockAlign;//块对齐; }WAVEFORMAT;data子块包含WAVE文件的数字化波形声音数据,其存放格式依赖于fmt子块中wFormatTag成员指定的格式种类,在多声道WAVE文件中,样本是交替出现的。

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档