zoukankan      html  css  js  c++  java
  • 基于VC的声音文件操作(一)

    (一)文件格式

     1、RIFF文件结构和WAVE文件格式

    Windows支持两种RIFF(Resource Interchange File Format,"资源交互文件格式")格式的音频文件,MIDI的RMID文件和波形音频文件格式WAVE文件,其中在计算机领域最常用的数字化声音文件格式是后者,它是微软专门为Windows系统定义的波形文件格式,本文涉及到的声音文件所指的就是WAVE文件;常见的WAVE语音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值);

    RIFF文件结构可以看作是树状结构,其基本构成是称为"块"(Chunk)的单元,每个块有"标志符"、"数据大小"及"数据"所组成,块的结构如下:

    块的标志符(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大小
    数据1
    格式/列表类型
    数据

    WAVE文件结构,WAVE是非常简单的一种RIFF文件,它的格式类型为"WAVE";RIFF块包含两个子块,这两个子块的ID分别是"fmt"和"data",其中"fmt"子块由结构PCMWAVEFORMAT所组成,数据组成就是PCMWAVEFORMAT结构中的数据,WAVE文件的结构如下:

    标志符(RIFF)
    数据大小
    格式类型("WAVE")
    "fmt"
    Sizeof(PCMWAVEFORMAT)
    PCMWAVEFORMAT
    "data"
    声音数据大小
    声音数据

     Wave的具体格式,请阅读wav文件格式分析

    版权申明:本站文章均来自网络,如有侵权,请评论 ,收到后立即删除,谢谢! 

  • 相关阅读:
    gRPC初识
    Go操作MySQL
    Go语言操作Redis
    Markdown 教程
    Go操作MongoDB
    Go操作NSQ
    Go操作kafka
    Go操作etcd
    Go语言获取系统性能数据gopsutil库
    influxDB
  • 原文地址:https://www.cnblogs.com/wanghoney/p/3449569.html
Copyright © 2011-2022 走看看