日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WAV文件解析

發布時間:2023/12/14 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WAV文件解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、WAV簡介

二、WAV文件結構

2.1 首部數據

2.2?Format數據塊

2.3?Data數據塊

2.4其他數據塊

參考資料


一、WAV簡介

WAV格式是微軟公司開發的一種聲音文件格式,也叫波形聲音文件,是最早的數字音頻格式,被Windows平臺及其應用程序廣泛支持。WAV格式支持許多壓縮算法,支持多種音頻位數、采樣頻率和聲道,采用44.1kHz的采樣頻率,16位量化位數,因此WAV的音質與CD相差無幾,但WAV格式對存儲空間需求太大不便于交流和傳播。

二、WAV文件結構

WAV文件遵循RIFF規則,其內容以區塊(chunk)為最小單位進行存儲。WAV文件一般由3個區塊組成:RIFF chunk、Format chunkData chunk。另外,文件中還可能包含一些可選的區塊,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。

下文將通過分析一個wav示例文件來詳細介紹WAV文件格式。

圖1 wav示例文件

2.1 首部數據

整個WAV都是由RIFF數據塊組成,可以將整個WAV文件看作一個完整的RIFF數據塊,在這個RIFF數據塊中又包含若干的子塊存放不同的信息。

對于整個WAV文件而言,其首部結構,也即整個RIFF數據塊的頭部結構如下。

表1 WAV文件首部的結構

名稱

偏移地址

字節數

端序

內容

ID

0x00

4Byte

大端

'RIFF' (0x52494646)

Size

0x04

4Byte

小端

文件大小

Type

0x08

4Byte

大端

'WAVE'(0x57415645)

在UltraEdit軟件中打開樣例音頻文件。

?

WAV首部數據部分在圖中用橫線畫出。

  • 紅線部分是ID,52 49 46 46 對應的ASCII字符為RIFF。
  • 黃線部分是Size,代表文件大小,注意該項的端序為小端開始,即從低位向高位讀入。該部分的實際值應為 80 B1 45 01 的反向順序即 01 45 B1 80 換成10進制為21344640字節(20844kB)。
  • 藍線部分是Type,57 41 56 45對應的ASCII字符為WAVE。

2.2?Format數據塊

WAV文件的其中一個重要的子塊就是Format數據塊,包含WAV音頻文件的一些詳細屬性,具體結構如下。

表2 Format數據塊的結構

名稱

偏移地址

字節數

端序

內容

ID

0x00

4Byte

大端

'fmt ' (0x666D7420)

Size

0x04

4Byte

小端

16

AudioFormat

0x08

2Byte

小端

音頻格式

NumChannels

0x0A

2Byte

小端

聲道數

SampleRate

0x0C

4Byte

小端

采樣率

ByteRate

0x10

4Byte

小端

每秒數據字節數

BlockAlign

0x14

2Byte

小端

數據塊對齊

BitsPerSample

0x16

2Byte

小端

采樣位數

繼續分析示例文件,可以看到RIFF數據塊后即為Format數據塊。

紅線部分是ID,66 6D 74 20對應的ASCII字符即為fmt 。(20對應的SCII字符為空格)

黃線部分是聲道數,02 00 表示該音頻文件為雙聲道。

綠線部分是采樣率,同樣從小端開始,00 00 AC 44 換成10進制為44100。

2.3?Data數據塊

Data數據塊是存放實際音頻數據的數據塊,具體結構如下。

表3 Data數據塊的結構

名稱

偏移地址

字節數

端序

內容

ID

0x00

4Byte

大端

'data' (0x64617461)

Size

0x04

4Byte

小端

N

Data

0x08

NByte

小端

音頻數據

樣例文件中紅線部分即為Data數據塊的ID部分, 64 61 74 61 對應的ASCII字符為data。

藍線部分為Data數據塊的Size部分,代表Data數據塊的長度,01 45 B0 BC換成10進制為21344444字節。

藍線后的部分即為實際的音頻數據,對于不同的聲道數和采樣率,音頻數據的布局也不同,具體的布局如下。

8bit 單聲道
采樣1采樣2
數據1數據2
8bit 雙聲道
采樣1采樣2
聲道1數據1聲道2數據1聲道1數據2聲道2數據2
16bit 單聲道
采樣1采樣2
數據1低字節數據1高字節數據1低字節數據1高字節
16bit 雙聲道
采樣1采樣2
聲道1數據1低字節聲道1數據1高字節聲道2數據1低字節聲道2數據1高字節聲道1數據2低字節聲道1數據2高字節聲道2數據2低字節聲道2數據2高字節

2.4其他數據塊

在WAV中還存在其他的數據塊,存放不同的輔助信息,這些塊都以RIFF數據塊格式存儲,格式如下。

當ID為“RIFF”或“LIST”時,允許該數據塊中包含子塊。

"LIST"塊的數據域的起始位置也有一個四字節類型碼(List Type),用于說明LIST數據域的數據內容。比如,類型碼為"INFO"時,其數據域可能包括"ICOP"、"ICRD"塊,用于記錄文件版權和創建時間信息。

?例如在示例文件中就有“IART”塊(紅線部分)用于存放音樂家姓名,“INAM”塊(黃線部分)用于存放音樂標題;“IPRD”塊(藍線部分)用于存放音樂所屬專輯名稱。

參考資料

WAV_百度百科 (baidu.com)https://baike.baidu.com/item/WAV/218914?fromtitle=WAV%E6%A0%BC%E5%BC%8F&fromid=291538&fr=aladdin史上全最的WAV格式詳解 - 簡書 (jianshu.com)https://www.jianshu.com/p/b7cadd3e9c4dWAV文件格式詳解_imxiangzi的專欄-CSDN博客_wav格式https://blog.csdn.net/imxiangzi/article/details/80265978

總結

以上是生活随笔為你收集整理的WAV文件解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。