wav文件头
各种格式的文件头

1、从 Ultra - edit-32 中提取出来的- ]0 v* \7 L+ pJPEG (jpg) ,文件头: FFD8FF . W7 B" m: Y2 s $ t1 g. u PNG (png) ,文件头: 89504E47 GIF (gif) ,文件头: 47494638 ,文件头: 49492A00 1 k3 u0 i 8 g. y- U1 G Windows Bitmap (bmp) ,文件头: 424D 3 P' s2 Z, t1 F; \* 6 U" b2 ?) ~; u: S0 a. R 1 c# B: S TIFF (tif)|1 T CAD (dwg) ,文件头: 41433130 8 m9 j% v9 x/ S' ]7 U" z& y9 X+ a Adobe Photoshop (psd) ,文件头:38425053 : E2 Z& R4 F. n1 y Rich Text Format (rtf) ,文件头: 7B5C727466 6 F: u! i$ y+ W1 F8 x f$ EXML (xml),文件头:3C3F786D6C %-HTML (html) ,文件头: 68746D6C3EEmail [thorough only] (eml) ,文件头: 44656C69766572792D646174653AOutlook Express (dbx) ,文件头: CFAD12FEC5FD746FOutlook (pst) ,文件头: 2142444EMS Word/Excel (xls.or.doc) ,文件头: D0CF11E0 & @3 X& k$ T 7 r$ ~# _* E% B# oMS Access (mdb) ,文件头: 5374616E64617264204A 3 O1 r, C; s3 s! O, Z- Y! a WordPerfect (wpd) ,文件头: FF575043 2 [0 v) j" I8 C& X! {Postscript (eps.or.ps) ,文件头: 252150532D41646F6265Adobe Acrobat (pdf) ,文件头: 255044462D312E 4 s8 D9 F* U / Y6 o+ J6 { Quicken (qdf) ,文件头:AC9EBD8F 1 ]' T) V+Windows Password (pwl),文件头:E3828596ZIP Archive (zip) ,文件头: 504B0304RAR Archive (rar),文件头:52617221Wave (wav) ,文件头: 57415645AVI (avi) ,文件头: 41564920Real Audio (ram) ,文件头: 2E7261FDReal Media (rm) ,文件头: 2E524D46MPEG (mpg) ,文件头: 000001BA 1 h: ?! r) T& B7 zMPEG (mpg) ,文件头: 000001B3Quicktime (mov) ,文件头: 6D6F6F76Windows Media (asf),文件头:3026B2758E66CF11 #MIDI (mid) ,文件头: 4D546864二、从 winhex 中取出的文件头列表File Type ExtensionsHeader 4 G4 X" s( j 5 D( w% vJPEG jpg;jpeg 0xFFD8FFPNG png 0x89504E470D0A1A0A " |( Z# {" R1d3 X+ M+ N- [& X8 @GIF gif GIF8TIFF tif;tiff 0x49492A00TIFF tif;tiff 0x4D4D002A .…一Bit map bmp BMAOL ART art 0x4A47040E000000AOL ART art 0x4A47030E000000 &@PC Paintbrush pcx 0x0A050108 .....Graphics Metafile wmf 0xD7CDC69AGraphics Metafile wmf 0x01000900Graphics Metafile wmf 0x02000900Enhanced Metafile emf 0x0100000058000000 # Y$ Y% [: s' Q Corel Draw cdr CDR ) q7 k- f1 R$ i4 E& ECAD dwg 0x41433130Adobe Photoshop psd 8BPS 3 X4 s 2 x; F7 S' cRich Text Format rtf rtf 6 k' Y% K$ X2 O: a" eXML xmlHTML html;htm;php;php3;php4;phtml;shtml type& v ; e# a0 z 2 Q2 l, U" WEmail eml Delivery-date:Outlook Express dbx 0xCFAD12FEOutlookpst!BDNMS Office/OLE2 doc;xls;dot;ppt;xla;ppa;pps;pot;msi;sdw;db 0xD0CF11E0A1B11AE1 MS Access mdb;mda;mde;mdt Standard J WordPerfect wpd 0xFF575043OpenOffice Writer sxw writer 6 n# Q [1 r" O" x- h# c, \$ { OpenOffice Calc sxc calc . q& F4 j 1 ~ % K8 J% v ! Q* C OpenOffice Math sxm math + Z {$ Z, p& q 4 _6 T 1 a$ c 5 E! I OpenOffice Impress sxi impress 1 Y* d% W7 h& g! V OpenOffice Draw sxd draw( Z! \/ u% B, k & @6 jAdobe FrameMaker fm <MAKERFILE # b- Q2 z, p* S5 P* D0 H PostScript eps.or.ps;ps;eps %!PS-Adobe ' m9 c) ?! D' b8 g0 M- d1 TAdobe Acrobat pdf %PDF-1. 4 {, e' l1 J$ S7 G7 M0 ~. o* C & g) k Quicken qdf 0xAC9EBD8F $ v5 m {( B6 z QuickBooks Backup qbb 0x458600000600Sage sly.or.srt.or.slt;sly;srt;slt 0x53520100Sage Backup 1 SAGEBACKUPLotus WordPro v9 lwp 0x576F726450726F Lotus 123 v9 123 0x00001A00051004 Lotus 123 v5 wk4 0x00001A0002100400 Lotus 123 v3 wk3 0x00001A0000100400 Lotus 123 v1 wk1 0x2000604060) w7 {8 v7 B0 o- r Windows Password pwl 0xE3828596ZIP Archive zip;jar 0x504B0304 1 g3 h'{" {/ d) \, cZIP Archive (outdated) zip 0x504B3030RAR Archive rar Rar!GZ Archive gz;tgz 0x1F8B085 G3 ~ % a, a( x$ l+ B BZIP Archive bz2 BZhARJ Archive arj 0x60EA7-ZIP Archive 7z ■7—隹 17z 集 'Wave wav WAVEAVI avi AVIReal Audio ram;ra .ra?0Real Media rm .RMFMPEG mpg;mpeg 0x000001BA# L. w& P: P! ]: F; F 2 i MPEG mpg;mpeg 0x000001B3 Quicktime mov moov …Windows Media asf 0x3026B2758E66CF11 MIDI mid MThd 0 Y; q; ]* \9 V" AWin32 Executable exe;dll;drv;vxd;sys;ocx;vbx MZWin16 Executable exe;dll;drv;vxd;sys;ocx;vbx MZELF Executable elf;; 0x7F454C4601010100 常见文件的文件头jpg: 255,216gif: 71,73bmp: 66,77png: 137,80doc: 208,207docx: 80,75xls: 208,207xlsx: 80,75js: 239,187swf: 67,87txt: 70,67mp3: 73,68wma: 48,38mid: 77,84rar: 82,97zip: 80,75xml: 60,63用文件头判断。
WAV文件格式分析与详解

WAV文件格式分析与详解作者:王若钧何杉来源:《数字技术与应用》2014年第03期摘要:WAV文件格式信息是对WAV文件编程的重要依据。
揭开WAV文件格式的奥秘是开发功能强大的具有自主知识产权的语音处理软件的关键。
本文结合波形文件的基本知识,较系统地说明了WAV文件的存储原理、文件结构、WAV文件头格式、基于PCM编码的数据组织,内容全面、清楚、准确,还包含了一些新汇集的参数。
可作为开发人员的参考资料。
关键词:文件格式 WAV 编码声音中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2014)03-0093-021 引言WAV文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形文件,可直接存储声音波形,还原的波形曲线十分逼真。
WAV文件格式简称WAV格式是一种存储声音波形的数字音频格式,是由微软公司和IBM联合设计的,经过了多次修订,可用于Windows,Macintosh,Linix等多种操作系统,详述如下。
2 波形文件的基础知识2.1 波形文件的存储过程声源发出的声波通过话筒被转换成连续变化的电信号,经过放大、抗混叠滤波后,按固定的频率进行采样,每个样本是在一个采样周期内检测到的电信号幅度值;接下来将其由模拟电信号量化为由二进制数表示的积分值;最后编码并存储为音频流数据。
有的应用为了节省存储空间,存储前,还要对采样数据先进行压缩。
2.2 WAV文件的编码编码包括了两方面内容,一是按一定格式存储数据,二是采用一定的算法压缩数据。
WAV格式对音频流的编码没有硬性规定,支持非压缩的PCM(Puls Code Modulation)脉冲编码调制格式,还支持压缩型的微软自适应差分脉冲编码调制Microsoft ADPCM(Adaptive Differential Puls Code Modulation)、国际电报联盟(International Telegraph Union)制定的语音压缩标准ITU G.711 a-law、ITU G.711-law、IMA ADPCM、ITU G.723 ADPCM (Yamaha)、GSM 6.10、ITU G.721 ADPCM编码和其它压缩算法。
C语言解析WAV音频文件

C语⾔解析WAV⾳频⽂件C语⾔解析WAV⾳频⽂件代码地址:⽬录在计算机中有着各式各样的⽂件,⽐如说EXE这种可执⾏⽂件,JPG这种图⽚⽂件,也有我们平时看的TXT,或者C,CPP,PHP等代码⽂件。
如果把这些⽂件⽤记事本或者其他纯⽂本编辑器打开,会发现前⾯这类⽂件打开之后基本上都是乱码,也就是⾮⼈类可读的字符,⽽后⾯这类代码或者TXT⽂件打开之后都是⼈类可读的字符串。
如果我们把这些⽂件统⼀做⼀个分类,那么前⾯的EXE,JPG之类的这种打开之后都是我们看不懂的外星球⽂字的⽂件叫做⼆进制⽂件,⽽后⾯那些⽂件可以称为是⽂本⽂件。
后⾯那种分类是⽂本⽂件很好理解,毕竟都是我们认识的⽂本⽂字,但是前⾯的那些乱码为什么叫他⼆进制⽂件呢?这些⼆进制⽂件是怎么被计算机识别的,为什么这些乱码就能被计算机识别,并且放出悠扬动听的⾳乐或者栩栩如⽣的图⽚呢?我们学编程,搞计算机的⼈能不能也⾃⼰写⼀个程序把这些数据解析出来呢?请跟听本专栏栏猪⼀起慢慢道来。
前⾔我们将⼀步⼀步来了解C语⾔的⼀些基本库的使⽤,以及如何使⽤这些库来解析⼀个wav格式的⾳频⽂件,将其中的元数据(也就是该⾳频⽂件的⼀些属性)提取出来。
因此您需要有基本的计算机基础知识以及了解C语⾔,最好还对⾳频或者信号处理感兴趣。
了解WAV⾳频⽂件下⾯是百度百科的解释WAV为微软公司(Microsoft)开发的⼀种声⾳⽂件格式,它符合RIFF(Resource Interchange File Format)⽂件规范,⽤于保存Windows平台的⾳频信息资源,被Windows平台及其应⽤程序所⼴泛⽀持,该格式也⽀持MSADPCM,CCITT A LAW等多种压缩运算法,⽀持多种⾳频数字,取样频率和声道,标准格式化的WAV⽂件和CD格式⼀样,也是44.1K的取样频率,16位量化数字,因此在声⾳⽂件质量和CD相差⽆⼏! WAV打开⼯具是WINDOWS的媒体播放器。
通常使⽤三个参数来表⽰声⾳,量化位数,取样频率和采样点振幅。
WAV文件读取

WAV⽂件读取WAV是⼀种以RIFF为基础的⽆压缩⾳频编码格式,该格式以Header、Format Chunk及Data Chunk三部分构成。
本⽂简要解析了各部分的构成要素,概述了如何使⽤C++对⽂件头进⾏解析以及提取⾳频数据。
上图展⽰了WAV⽂件格式,包括每⼀field的⼤⼩与端序HeaderChunkID: 4字节⼤端序。
⽂件从此处开始,对于WAV或AVI⽂件,其值总为“RIFF”。
ChunkSize: 4字节⼩端序。
表⽰⽂件总字节数减8,减去的8字节表⽰ChunkID与ChunkSize本⾝所占字节数。
Format: 4字节⼤端序。
对于WAV⽂件,其值总为“WAVE”Format ChunkSubchunk1ID: 4字节⼤端序。
其值总为“fmt ”,表⽰Format Chunk从此处开始。
Subchunk1Size: 4字节⼩端序。
表⽰Format Chunk的总字节数减8。
AudioFormat: 2字节⼩端序。
对于WAV⽂件,其值总为1。
NumChannels: 2字节⼩端序。
表⽰总声道个数。
SampleRate: 4字节⼩端序。
表⽰在每个通道上每秒包含多少帧。
ByteRate: 4字节⼩端序。
⼤⼩等于SampleRate * BlockAlign,表⽰每秒共包含多少字节。
BlockAlign: 2字节⼩端序。
⼤⼩等于NumChannels * BitsPerSample / 8,表⽰每帧的多通道总字节数。
BitsPerSample: 2字节⼩端序。
表⽰每帧包含多少⽐特。
Data ChunkSubchunk2ID: 4字节⼤端序。
其值总为“data”,表⽰Data Chunk从此处开始。
Subchunk2Size: 4字节⼩端序。
表⽰data的总字节数。
data:⼩端序。
表⽰⾳频波形的帧数据,各声道按帧交叉排列。
使⽤C++解析WAV⽂件⽂件头结构定义结构体WaveHeader来保存WAV⽂件头,即Header、Format Chunk及Data Chunk的⾮data部分,此外在该结构体中添加了num_frame 字段,⽤来保存⽂件总帧数,由于Header、Format Chunk与Data Chunk之间可能有其他说明信息,所以还添加了start_pos字段⽤来保存真正的data开始的位置。
pcm编码方式与wave音频格式

1. 音频简介经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;当然也可以有 16bit 的单声道或 8bit 的立体声, 等等。
采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。
采样值是指每一次采样周期内声音模拟信号的积分值。
对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。
人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。
这和电影的每秒 24 帧图片的道理差不多。
每个采样数据记录的是振幅, 采样精度取决于储存空间的大小:1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.这样我们就可以根据一个 wav 文件的大小、采样频率和采样大小估算出一个wav 文件的播放长度。
譬如 "Windows XP 启动.wav" 的文件长度是 424,644 字节, 它是"22050HZ / 16bit / 立体声" 格式(这可以从其 "属性->摘要" 里看到),那么它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050*16*2 = 705600(bit/s), 换算成字节单位就是 705600/8 = 88200(字节/秒), 播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。
名词解释wav格式

名词解释wav格式
WAV格式是一种音频格式,全称为waveform Audio File Format,也称
为波形文件,是一种存储声音波形的数字音频格式。
它是由微软公司和IBM 联合设计的,是微软公司专门为Windows开发的一种标准数字音频文件,能记录各种单声道或立体声的声音信息,并保证声音不失真。
WAV文件可直接存储声音波形,还原的波形曲线十分逼真。
但是,WAV
文件占用空间极大,每分钟的WAV文件大约要占用12MB左右的磁盘空间,而同等大小的MP3文件,则仅需要1MB左右。
如需更多信息,建议到WAV相关论坛获取或咨询音频领域专业人士。
wav文件头详解,看懂wav文件

wav⽂件头详解,看懂wav⽂件⼯作中部门萌新常问的wav⽂件头格式及怎么看wav⽂件,且有时会遇到 “伪.pcm” 格式现总结如下: WAV是最常见的声⾳⽂件格式之⼀,是微软公司专门为Windows开发的⼀种标准数字⾳频⽂件,该⽂件能记录各种单声道或⽴体声的声⾳信息,并能保证声⾳不失真。
但WAV⽂件有⼀个缺点,就是它所占⽤的太⼤(每分钟的⾳乐⼤约需要12兆磁盘空间)。
它符合资源互换⽂件格式(RIFF)规范,⽤于保存Windows平台的⾳频信息资源推荐⼀个好⽤的16进制⽂件查看的⼯具:HxDx64对于完全0基础的,推荐下⾯⽹站中的详细解释,⽐较详细:(侵删)1.RIFF块(RIFF-Chunk)偏移地址字节数数据类型内容&H004String‘RIFF‘⽂件标志&H044UInteger⽂件总长&H08 4 String ‘WAVE‘⽂件标志2.格式化块(Format-Chunk)偏移地址字节数数据类型内容&H0C4String‘fmt‘标志&H104UInteger块长度&H12 2 UShort PCM格式类别&H142 UShort 声道数⽬&H184 UInteger 采样率&H1C 4 UInteger 传输速率&H1E 2UShort 数据块对齐&H202UShort 每样本bit数&H22 2UShort 可选3.附加块(Fact-Chunk) *当前块偏移地址需要根据实际数据变更偏移地址字节数数据类型内容&H264String‘fact‘标志&H2A4UInteger块长度&H2E4UInteger附加信息4.数据块(Data-Chunk) *当前块偏移地址需要根据实际数据变更偏移地址字节数数据类型内容&H324String‘data‘⽂件标志&H364UInteger数据块总长按照相关头格式,来观察字节即可Example:(取⾃上⾯博客)。
WAV文件的头信息

{
char cRiffFlag[4];
UIN32 nFileLen;
char cWaveFlag[4];
char cFmtFlag[4];
char cTransition[4];
UIN16 nFormatTag ;
UIN16 nChannels;
04H 4 long int 文件长度
08H 4 char "WAVE"#34;标志
10H 4 过渡字节(不定)
14H 2 int 格式类别(10H为PCM形式的声音数据)
16H 2 int 通道数,单声道为1,双声道为2
18H 2 int 采样率(每秒样本数),表示每个通道的播放速度, (Hz) sample frequency
UIN16 nSamplesPerSec;
UIN32 nAvgBytesperSec;
UIN16 nBlockAlign;
UIN16 nBitNumPerSample;
char cDataFlag[4];
UIN16 nAudioLength;
} WAVEFORMAT;
16位PCM int 32767 -32767
///////////////////////////////////////////////////////////////////////下面是常用来表示的数据结构
unsigned short tag; /* MS PCM = 1 */
1CH 4 long int 波形音频数据传送速率,其值为通道数×每秒样本数×每样本的数据位数(bit)/8。播放软件利用此值可以估计缓冲区的大小。
20H 2 int 数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、各种WAV文件头格式
WAV文件也分好几个种类,相应的非数据信息存储在文件头部分,以下是各种WAV文件头格式。
表18KHz采样、16比特量化的线性PCM语音信号的WAV文件头格式表(共44字节)
表28KHz采样、8比特A律量化的PCM语音信号的WAV文件头格式表(共58字节)
表38KHz采样、8比特U律量化的PCM语音信号的WAV文件头格式表(共58字节)
表4ADPCM语音编码后的WAV文件头格式表(共90字节)
表5GSM(Global System for Mobile Communication全球移动通信系统)语音编码后的WAV文件头格式表(共60字节)
表6SBC(Sub-Band Coding子带编码)语音编码后的WAV文件头格式表(共58字节)
表7CELP(Code Excited Linear Prediction码激励线性预测编码——近10年来最成功的语音编码算法)语音编码后的WAV文件头格式表(共58字节)
概念1、读取WAV文件,填写WAVEFORMATEX结构
WAVEFORMATEX
typedef struct{WORD wFormatTag;WORD nChannels;DWORD nSamplesPerSec;DWORD nAvgBytesPe rSec; WORD nBlockAlign;WORD wBitsPerSample;WORD cbSize;} WAVEFORMATEX;
具体参数解释如下:
wFormatTag:波形数据的格式,定义在MMREG.H文件中
nChannels:波形数据的通道数:单声道或立体声
nSamplesPerSec:采样率,对于PCM格式的波形数据,采样率有8.0 kHz,11.025kHz,22.05 kHz,44.1 kHz 等
nAvgBytesPerSec:数据率,对于PCM格式的波形数据,数据率等于采样率乘以每样点字节数nBlockAlign:每个样点字节数
wBitsPerSample:采样精度,对于PCM格式的波形数据,采样精度为8或16
cbSize:附加格式信息的数据块大小
概念2、定义设备头结构
以下WAVEHDR定义了指向波形数据缓冲区的设备头。
WAVEHDR
typedef struct { LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded; DWORD dwUser ; DWORD dwFlags; DWORD dwLoops; struct wavehdr_tag * lpNext; DWORD reserved; } WAVEHDR; lpData:波形数据的缓冲区地址
dwBufferLength:波形数据的缓冲区地址的长度
dwBytesRecorded:当设备用于录音时,标志已经录入的数据长度
dwUser:用户数据
dwFlags:波形数据的缓冲区的属性
dwLoops:播放循环的次数,仅用于播放控制中
lpNext和reserved均为保留值
注意:上述结构体以及我们在程序中所使用到的“HWAVEIN””HWAVEOUT”结构体均是系统已经存在的,我们只需要对其进行赋值即可。
二、PCM(44字节)的W AV文件头及其相关的编程方法
1、以下就经常见的一种格式PCM(44字节)的WAV文件头进行分析。
举例说明:kugoo下载的一首wav文件:魏三抹去泪水wav.wav(大小14,703,980 字节,时长2:46),文件头如下:
⑴地址00H-03H,值为“RIFF”标志;
⑵地址04H-07H,值为“64 5D E0 00”,存储的是文件大小刨去8字节后的值,注意这个是little-endian 的,也就是高地址存低位,地地址存高位,所以Size=00E05D64H=14703972字节,比文件总大小少8个字节,这8个字节就是00H-07H;
⑶地址08H-0FH,就是“WAVEfmt ”标记;
⑷地址10H-13H,fmt格式的块大小,这种格式时是“10 00 00 00”,也是little-endian的,即块大小为16,也有可能为18,这时最后多了2个字节的附加信息。
其他格式的可能是20;
⑸地址14H-15H,“01 00”,也是little-endian的,标记编码方式,一般为0x0001;
⑹地址16H-17H,“01 00”,也是little-endian,标记声道数,这里值为1。
注意1代表单声道,2代表双声道;
⑺地址18H-1BH,“44 AC 00 00”,也是little-endian,标记采样频率,这里为441000Hz;
⑻地址1CH-1FH,“88 5801 00”每秒所需的字节数,也是little-endian,
bytepersec=00015888H=88200(字节)。
(加上点自己的看法88200=频率*采样一次占的字节数
=44100*2,我觉得这种关系是存在的,虽然很多资料上没提到);
⑼地址20H-21H,“02 00”,采样一次占字节数,有些地方也叫数据块对齐单位,也是little-endian 的,这里是两个字节。
声道数*量化数/8=1*16/8=2(字节);
⑽地址22H-23H,“10 00”,量化数,也就是每个采样需要的bit数,也是little-endian的,所以这里是16位;
⑾地址24H-27H,“64 61 74 61”,就是“data”了;
⑿地址28H-2BH,“40 5D E0 00”,存储的是文件大小刨去44字节后的值,这个也是little-endian的,Size=00E05D40H=14703936字节。
2、编程方法
⑴计算文件播放时长
文件播放时长=(文件总长度-文件头长度)/每秒所需的字节数。
如上例duration=(14,703,980 -44)/88200=166.7s,这个在kugoo的制作铃声功能下可以查询的到。
⑵按时间点切割文件(只精确到秒已用程序实现过,精确到0.1s理论上也是可以,但是没有用程序去实现)。
①切割文件的前N秒为一个新文件
第一步,计算N秒的偏移量,SetOff=N*每秒所需的字节数
第二步,算出新文件的大小,修改文件头的两个size值。
第三步,新的文件头以二进制形式写入到新文件,紧接着根据偏移量把原文件中的第45字节到(setOff-1)字节写入到新文件。
②窃取中间某个时间段为一个新文件
这里可以根据①的步骤进行,同样的要修改文件头。
三、wav文件格式
WAV为微软公司(Microsoft)开发的一种声音文件格式,文件作为多媒体中使用的声波文件格式之一,它是以RIFF(Resource Interchange File Format)格式为标准的。
每个WAV文件的头四个字节便
是“RIFF”。
WAV文件由文件头和数据体两大部分组成。
其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分,包含了音频流的编码参数。
WAV对音频流的编码没有硬性规定,除了PCM(Pulse Code Modulation脉冲编码调制)之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码,如MP3编码同样也可以运用在WAV中,只要安装好了相应的Decode(指令解码),就可以欣赏这些WAV了。
在windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完
美支持,由于本身可以达到较高的音质要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。
因此,基于PCM编码的WAV被作为了一种中介的格式,常常使用在其他编码的相互转
换之中,例如MP3转换成WMA。
WAV文件可以存储大量格式的数据,通常采用的音频编码方式是脉冲编码调制(PCM)。
由于WAV格式源自Windows/Intel环境,因而采用Little-Endian(小字节序、低字节序)字节顺序进行存储。
表1 WAV文件的文件头
表2 WAV声音文件的数据块
对于单声道声音文件,采样数据为8位的短整数(short int 00H—FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int), 高八位和低八位分别代表左右两个声道。
WAV文件数据块包含以脉冲编码调制(PCM)格式表示的样本,WAV文件是由样本组织而成的。
在单声道WAV文件中,声道0代表左声道,声道1代表右声道;在多声道WAV文件中,样本是交替出现的。
表3 WAV文件格式说明
表 4 PCM数据的存放方式
WAV文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。
首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式如下所示。