以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- WAV文件格式的应用举例 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=63974) |
-- 作者:卷积内核 -- 发布时间:6/23/2008 8:14:00 AM -- WAV文件格式的应用举例 1.1 RIFF文件和WAV文件格式 在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources lnterchange File Format),简称RIFF。例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk由"辨别码"、"数据大小"及"数据"所组成。 只要依循此一结构的文件,我们均称之为RIFF档。此种结构提供了一种系统化的分类。如果和MS一DOS文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。至于在RIFF文件的处理方面,微软提供了相关的函数。视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。 WAV为WAVEFORM(波形)的缩写。声音文件的结构如图1所示,"RIFF"的格式辨别码为"WAVE"。整个文件由两个chunk所组成:辨别码"fmt"(注意,最后一个是空白字符!)及"data"。 在"fmt"的chunk下包含了一个PCMWAVEFORMAT数据结构,其定义如下: typedef struct pcmwaveformat - tag { WAVEFORMAT wf ; WORD wBitsPerSample; } PCMWAVEFORMAT; typedef struct waveformat - tag { WORD wFormatTag ; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesperSec; WORD nBlockAlign; } WAVEFORMAT; 其意义分别为: wFormatTag:记录着此声音的格式代号,例如WAVE_FORMAT_PCM,WAVE_F0RAM_ADPCM等等。 nChannels:记录声音的频道数。 nAvgBytesPerSec:记录每秒的数据量。 nBlockA1ign:记录区块的对齐单位。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
39.063ms |