日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

wav数据格式详解

發(fā)布時(shí)間:2024/3/26 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wav数据格式详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 音頻簡(jiǎn)介

?

經(jīng)常見(jiàn)到這樣的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.

44100HZ 16bit stereo: 每秒鐘有 44100 次采樣, 采樣數(shù)據(jù)用 16 位(2字節(jié))記錄, 雙聲道(立體聲);

22050HZ 8bit??mono: 每秒鐘有 22050 次采樣, 采樣數(shù)據(jù)用 8 位(1字節(jié))記錄, 單聲道;

?

當(dāng)然也可以有 16bit 的單聲道或 8bit 的立體聲, 等等。

?

采樣率是指:聲音信號(hào)在“模→數(shù)”轉(zhuǎn)換過(guò)程中單位時(shí)間內(nèi)采樣的次數(shù)。采樣值是指每一次采樣周期內(nèi)聲音模擬信號(hào)的積分值。

?

對(duì)于單聲道聲音文件,采樣數(shù)據(jù)為八位的短整數(shù)(short int 00H-FFH);

而對(duì)于雙聲道立體聲聲音文件,每次采樣數(shù)據(jù)為一個(gè)16位的整數(shù)(int),高八位(左聲道)和低八位(右聲道)分別代表兩個(gè)聲道。

?

人對(duì)頻率的識(shí)別范圍是 20HZ - 20000HZ, 如果每秒鐘能對(duì)聲音做 20000 個(gè)采樣, 回放時(shí)就足可以滿足人耳的需求. 所以 22050 的采樣頻率是常用的, 44100已是CD音質(zhì), 超過(guò)48000的采樣對(duì)人耳已經(jīng)沒(méi)有意義。這和電影的每秒 24 幀圖片的道理差不多。

?

每個(gè)采樣數(shù)據(jù)記錄的是振幅, 采樣精度取決于儲(chǔ)存空間的大小:

1 字節(jié)(也就是8bit) 只能記錄 256 個(gè)數(shù), 也就是只能將振幅劃分成 256 個(gè)等級(jí);

2 字節(jié)(也就是16bit) 可以細(xì)到 65536 個(gè)數(shù), 這已是 CD 標(biāo)準(zhǔn)了;

4 字節(jié)(也就是32bit) 能把振幅細(xì)分到 4294967296 個(gè)等級(jí), 實(shí)在是沒(méi)必要了.

如果是雙聲道(stereo), 采樣就是雙份的, 文件也差不多要大一倍.

?

這樣我們就可以根據(jù)一個(gè) wav 文件的大小、采樣頻率和采樣大小估算出一個(gè) wav 文件的播放長(zhǎng)度。

?

譬如 "Windows XP 啟動(dòng).wav" 的文件長(zhǎng)度是 424,644 字節(jié), 它是 "22050HZ / 16bit / 立體聲" 格式(這可以從其 "屬性->摘要" 里看到),

那么它的每秒的傳輸速率(位速, 也叫比特率、取樣率)是 22050*16*2 = 705600(bit/s),?換算成字節(jié)單位就是 705600/8 = 88200(字節(jié)/秒),?
播放時(shí)間:424644(總字節(jié)數(shù)) / 88200(每秒字節(jié)數(shù)) ≈ 4.8145578(秒)。

但是這還不夠精確, 包裝標(biāo)準(zhǔn)的 PCM 格式的 WAVE 文件(*.wav)中至少帶有 42 個(gè)字節(jié)的頭信息, 在計(jì)算播放時(shí)間時(shí)應(yīng)該將其去掉,?
所以就有:(424644-42) / (22050*16*2/8) ≈ 4.8140816(秒). 這樣就比較精確了.

?

關(guān)于聲音文件還有一個(gè)概念: "位速", 也有叫做比特率、取樣率, 譬如上面文件的位速是 705.6kbps 或 705600bps, 其中的 b 是 bit, ps 是每秒的意思;

?

壓縮的音頻文件常常用位速來(lái)表示, 譬如達(dá)到 CD 音質(zhì)的 MP3 是: 128kbps / 44100HZ.


2.格式解析
WAV文件遵循RIFF規(guī)則,其內(nèi)容以區(qū)塊(chunk)為最小單位進(jìn)行存儲(chǔ)。WAV文件一般由3個(gè)區(qū)塊組成:RIFF chunk、Format chunk和Data chunk。另外,文件中還可能包含一些可選的區(qū)塊,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。
本文將只介紹RIFF chunk、Format chunk和Data chunk。

常見(jiàn)的wave文件的格式圖示

2.1 RIFF區(qū)塊

名稱偏移地址字節(jié)數(shù)端序內(nèi)容
ID0x004Byte大端'RIFF' (0x52494646)
Size0x044Byte小端fileSize - 8
Type0x084Byte大端'WAVE'(0x57415645)


以'RIFF'為標(biāo)識(shí)
Size是整個(gè)文件的長(zhǎng)度減去ID和Size的長(zhǎng)度
Type是WAVE表示后面需要兩個(gè)子塊:Format區(qū)塊和Data區(qū)塊
2.2 FORMAT區(qū)塊


以'fmt '為標(biāo)識(shí)
Size表示該區(qū)塊數(shù)據(jù)的長(zhǎng)度(不包含ID和Size的長(zhǎng)度)
AudioFormat表示Data區(qū)塊存儲(chǔ)的音頻數(shù)據(jù)的格式,PCM音頻數(shù)據(jù)的值為1
NumChannels表示音頻數(shù)據(jù)的聲道數(shù),1:單聲道,2:雙聲道
SampleRate表示音頻數(shù)據(jù)的采樣率
ByteRate每秒數(shù)據(jù)字節(jié)數(shù) = SampleRate * NumChannels * BitsPerSample / 8
BlockAlign每個(gè)采樣所需的字節(jié)數(shù) = NumChannels * BitsPerSample / 8
BitsPerSample每個(gè)采樣存儲(chǔ)的bit數(shù),8:8bit,16:16bit,32:32bit
[注意] 這個(gè)區(qū)域只需要關(guān)心?NumChannels?SampleRate?BitsPerSample 三個(gè)參數(shù)就可以了,其它的都是依據(jù)這三個(gè)計(jì)算出來(lái)的。

2.3 DATA區(qū)塊

名稱偏移地址字節(jié)數(shù)端序內(nèi)容
ID0x004Byte大端'data' (0x64617461)
Size0x044Byte小端N
Data0x08NByte小端音頻數(shù)據(jù)


以'data'為標(biāo)識(shí)
Size表示音頻數(shù)據(jù)的長(zhǎng)度,N = ByteRate * seconds
Data音頻數(shù)據(jù)

總結(jié)

以上是生活随笔為你收集整理的wav数据格式详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。