当前位置: 首页 > news >正文

芜湖市网站建设_网站建设公司_Python_seo优化

linux网站如何做ip解析,极速网站建设服务商,搭建公司网站,seo网站排名wav文件格式分析详解 作者#xff1a;曹京日期#xff1a;2006年7月17日 一、综述 WAVE文件作为多媒体中使用的声波文件格式之一#xff0c;它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写#xff0c;每个WAVE文件的头四个字节便是“RIFF…wav文件格式分析详解 作者曹京日期2006年7月17日 一、综述    WAVE文件作为多媒体中使用的声波文件格式之一它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写每个WAVE文件的头四个字节便是“RIFF”。    WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括RIFF WAVEChunk, Format Chunk, Fact Chunk(可选), Data Chunk。具体见下图 ------------------------------------------------|             RIFF WAVE Chunk                  ||             ID  RIFF                     ||             RiffType WAVE                |------------------------------------------------|             Format Chunk                     ||             ID fmt                       |------------------------------------------------|             Fact Chunk(optional)             ||             ID fact                      |------------------------------------------------|             Data Chunk                       ||             ID data                      |------------------------------------------------            图1   Wav格式包含Chunk示例 其中除了Fact Chunk外其他三个Chunk是必须的。每个Chunk有各自的ID位于Chunk最开始位置作为标示而且均为4个字节。并且紧跟在ID后面的是Chunk大小去除ID和Size所占的字节数后剩下的其他字节数目4个字节表示低字节表示数值低位高字节表示数值高位。下面具体介绍各个Chunk内容。PS    所有数值表示均为低字节表示低位高字节表示高位。 二、具体介绍RIFF WAVE Chunk        |       |所占字节数|  具体内容   |        | ID    |  4 Bytes |   RIFF    |    ----------------------------------    | Size  |  4 Bytes |             |    ----------------------------------    | Type  |  4 Bytes |   WAVE    |    ----------------------------------            图2  RIFF WAVE Chunk 以FIFF作为标示然后紧跟着为size字段该size是整个wav文件大小减去ID和Size所占用的字节数即FileLen - 8 Size。然后是Type字段为WAVE表示是wav文件。    结构定义如下 struct RIFF_HEADER {  char szRiffID[4];  // R,I,F,F  DWORD dwRiffSize;  char szRiffFormat[4]; // W,A,V,E }; Format Chunk        |               |   字节数  |              具体内容                |        | ID            |  4 Bytes  |   fmt                              |    --------------------------------------------------------------------    | Size          |  4 Bytes  | 数值为16或1818则最后又附加信息     |    --------------------------------------------------------------------  ----    | FormatTag     |  2 Bytes  | 编码方式一般为0x0001(详见后文)     |     |    --------------------------------------------------------------------     |    | Channels      |  2 Bytes  | 声道数目1--单声道2--双声道       |     |    --------------------------------------------------------------------     |    | SamplesPerSec |  4 Bytes  | 采样频率                             |     |    --------------------------------------------------------------------     |    | AvgBytesPerSec|  4 Bytes  | 每秒所需字节数                       |     | WAVE_FORMAT    --------------------------------------------------------------------     |    | BlockAlign    |  2 Bytes  | 数据块对齐单位(每个采样需要的字节数) |     |    --------------------------------------------------------------------     |    | BitsPerSample |  2 Bytes  | 每个采样需要的bit数                  |     |    --------------------------------------------------------------------     |    |               |  2 Bytes  | 附加信息可选通过Size来判断有无 |     |    --------------------------------------------------------------------  ----                            图3  Format Chunk 以fmt 作为标示。一般情况下Size为16此时最后附加信息没有如果为18则最后多了2个字节的附加信息。主要由一些软件制成的wav格式中含有该2个字节的附加信息。    结构定义如下 struct WAVE_FORMAT {  WORD wFormatTag;  WORD wChannels;  DWORD dwSamplesPerSec;  DWORD dwAvgBytesPerSec;  WORD wBlockAlign;  WORD wBitsPerSample; }; struct FMT_BLOCK {  char  szFmtID[4]; // f,m,t,   DWORD  dwFmtSize;  WAVE_FORMAT wavFormat; }; 补充头文件样例说明 首先是一串“52 49 46 46”这个是Ascii字符“RIFF”这部分是固定格式表明这是一个WAVE文件头。然后是“E4 3C 00 00”这个是我这个WAV文件的数据大小记住这个大小是包括头文件的一部分的包括除了前面8个字节的所有字节也就等于文件总字节数减去8。这是一个DWORD我这个文件对应是15588。然后是“57 41 56 45 66 6D 74 20”也是Ascii字符“WAVEfmt”这部分是固定格式。然后是PCMWAVEFORMAT部分可以对照一下上面的struct定义首先就是一个WAVEFORMAT的struct。随后是“10 00 00 00”这是一个DWORD对应数字16这个对应定义中的Sizeof(PCMWAVEFORMAT)后面我们可以看到这个段内容正好是16个字节。随后的字节是“01 00”这是一个WORD对应定义为编码格式“WAVE_FORMAT_PCM”我们一般用的是这个。随后的是“01 00”这是一个WORD对应数字1表示声道数为1这是个单声道Wav。随后的是“22 56 00 00”这是一个DWORD对应数字22050代表的是采样频率22050。随后的是“44 AC 00 00”这是一个DWORD对应数字44100代表的是每秒的数据量。然后是“02 00”这是一个WORD对应数字是2表示块对齐的内容含义不太清楚。然后是“10 00”这是一个WORD对应WAVE文件的采样大小数值为16采样大小为16Bits。然后是一串“64 61 74 61”这个是Ascii字符“data”标示头结束开始数据区域。而后是数据区的开头有一个DWORD我这里的字符是“C0 3C 00 00”对应的十进制数为15552看一下前面正好可以看到文件大小是15596其中到“data”标志出现为止的头是40个字节再减去这个标志的4个字节正好是15552再往后面就是真正的Wave文件的数据体了头文件的解析就到这里。 Fact Chunk        |       |所占字节数|  具体内容   |        | ID    |  4 Bytes |   fact    |    ----------------------------------    | Size  |  4 Bytes |   数值为4   |    ----------------------------------    | data  |  4 Bytes |             |    ----------------------------------            图4  Fact Chunk Fact Chunk是可选字段一般当wav文件由某些软件转化而成则包含该Chunk。    结构定义如下 struct FACT_BLOCK {  char  szFactID[4]; // f,a,c,t  DWORD  dwFactSize; }; Data Chunk        |       |所占字节数|  具体内容   |        | ID    |  4 Bytes |   data    |    ----------------------------------    | Size  |  4 Bytes |             |    ----------------------------------    | data  |          |             |    ----------------------------------             图5 Data Chunk Data Chunk是真正保存wav数据的地方以data作为该Chunk的标示。然后是数据的大小。紧接着就是wav数据。根据Format Chunk中的声道数以及采样bit数wav数据的bit位置可以分成以下几种形式    ---------------------------------------------------------------------    |   单声道  |    取样1    |    取样2    |    取样3    |    取样4    |    |           |--------------------------------------------------------    |  8bit量化 |    声道0    |    声道0    |    声道0    |    声道0    |    ---------------------------------------------------------------------    |   双声道  |          取样1            |           取样2           |    |           |--------------------------------------------------------    |  8bit量化 |  声道0(左)  |  声道1(右)  |  声道0(左)  |  声道1(右)  |    ---------------------------------------------------------------------    |           |          取样1            |           取样2           |    |   单声道  |--------------------------------------------------------    | 16bit量化 |    声道0    |  声道0      |    声道0    |  声道0      |    |           | (低位字节)  | (高位字节)  | (低位字节)  | (高位字节)  |    ---------------------------------------------------------------------    |           |                         取样1                         |    |   双声道  |--------------------------------------------------------    | 16bit量化 |  声道0(左)  |  声道0(左)  |  声道1(右)  |  声道1(右)  |    |           | (低位字节)  | (高位字节)  | (低位字节)  | (高位字节)  |    --------------------------------------------------------------------- ---------------------------------------------------------------------                         图6 wav数据bit位置安排方式 Data Chunk头结构定义如下    struct DATA_BLOCK {  char szDataID[4]; // d,a,t,a  DWORD dwDataSize; }; FormatTag:说明 #define WAVE_FORMAT_UNKNOWN 0x0000 /* Microsoft Corporation */ #define WAVE_FORMAT_PCM 0x0001     /* Microsoft Corporation */ #define WAVE_FORMAT_ADPCM 0x0002   /* Microsoft Corporation */ #define WAVE_FORMAT_ALAW 0x0006    /* Microsoft Corporation */ #define WAVE_FORMAT_MULAW 0x0007   /* Microsoft Corporation */ #define WAVE_FORMAT_GSM610 0x0031  /* Microsoft Corporation */ #define WAVE_FORMAT_MPEG 0x0050   /* Microsoft Corporation */ 三、小结    因此根据上述结构定义以及格式介绍很容易编写相应的wav格式解析代码。这里具体的代码就不给出了。 四、参考资料    1、李敏, 声频文件格式WAVE的转换, 电脑知识与技术(学术交流), 2005.    2、http://www.codeguru.com/cpp/g-m/multimedia/audio/article.php/c8935__1/    3、http://www.smth.org/pc/pcshowcom.php?cid129276 4、http://icculus.org/SDL_sound/downloads/external_documentation/wavecomp.htm (英文详细说明) 本文来自CSDN博客转载请标明出处http://blog.csdn.net/xzdwfwt111/archive/2009/03/03/3949969.aspx 本文来自CSDN博客转载请标明出处http://blog.csdn.net/xzdwfwt111/archive/2009/03/03/3949969.aspx 本文来自CSDN博客转载请标明出处http://blog.csdn.net/xzdwfwt111/archive/2009/03/03/3949969.aspx
http://www.ihoyoo.com/news/1782.html

相关文章:

  • 百度建站官网涿州城乡建设局网站
  • 怎么 做网站教学流程h5哪个网站可以做
  • 网站建设员的薪水企业画册设计制作公司
  • 自己怎么建设一个网站竞价托管信息
  • 做网站播放未上映的电影深圳电商平台网站
  • 建设网站需要哪些硬件设施足球比赛直播间在线观看
  • 安徽柱石建设有限公司网站网页制作的公共样式
  • 菏泽网站建设公司蓝希科技外贸网站建设哪家公司比较好
  • 套模板的网站青岛网站建设康之迅
  • 莞城区网站仿做哪家微信网站建设好
  • 旅游网站建设费用wordpress电话注册
  • 网站换服务器 备案中企动力近期做的网站
  • 专业做财经直播网站有哪些cms建站步骤
  • 企业网站哪里可以做长兴县城乡建设局网站
  • 飞扬动力网站建设上海建设工程安全质量监督总站网站
  • 成都网站设计服务成都网站建设桔子科技
  • 帝国程序如何改网站标题快速排名上
  • 程序员接外包网站网站设计的目的
  • 垂直门户网站如何在社交网站上做视频推广
  • 筑建网站获取网站浏览者手机号
  • 设计类网站策划书福泉网站制作
  • 字体分辨网站做金融怎么进基金公司网站
  • 企业网站优化之如何做需求分析网络营销与传统营销的关系
  • 图片素材网站建设外贸企业网络营销
  • 免费开通网站江苏微信网站建设
  • 制作网站公司地址营销活动方案策划
  • 郑州企业网站快速优化价格郑州seo联系搜点网络效果好
  • dw旅游网站模板下载wordpress个人版支付
  • 哪儿提供邯郸做网站网站收录和没收录区别
  • 嘉兴seo网站排名优化打开edge是2345网址导航