色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

WAV文件格式詳解

嵌入式那些事 ? 來源:嵌入式那些事 ? 2023-10-21 09:52 ? 次閱讀

1、WAV文件概述

WAV是微軟公司開發的一種音頻格式文件,用于保存Windows平臺的音頻信息資源,它符合資源互換文件格式(Resource Interchange File Format,RIFF)文件規范。標準格式化的WAV文件和CD格式一樣,也是44.1K的取樣頻率,16位量化數字,因此在聲音文件質量和CD相差無幾!

WAV通常用來保存PCM格式的原始音頻數據,所以通常被稱為無損音頻。但是嚴格意義上來講,WAV也可以存儲其它壓縮格式的音頻數據。

2、WAV文件格式

WAV符合RIFF文件格式標準,可以看作是RIFF文件的一個具體實例。既然WAV符合RIFF規范,其基本的組成單元也是chunk。一個WAV文件通常有三個chunk以及一個可選chunk,其在文件中的排列方式依次是:RIFF chunk,Format chunk,Fact chunk(附加塊,可選),Data chunk。示意圖如下:

e3a6363e-6d8a-11ee-939d-92fbcf53809c.png

2019-10-21_162529

一個WAV文件,首先是一個RIFF chunk,其格式類型為'WAVE'。RIFF chunk包括兩個子chunk,ID分別為 'fmt '和'data',還有一個可選的Fact chunk。Format chunk用于表示音頻數據的屬性,包括編碼方式、聲道數目、采樣頻率、每個采樣需要的bit數等等信息。Fact chunk是一個可選chunk,一般當WAVE文件由某些軟件轉化而成就包含Fact chunk。Data chunk包含WAVE文件的數字化波形聲音數據。WAVE整體結構如下圖所示:

e3b0fb50-6d8a-11ee-939d-92fbcf53809c.png

2019-10-21_162508

接下來講講各個chunk的具體內容。

3、各個chunk的具體內容

(1).RIFF chunk

ID:4字節,值為"RIFF"。

Size:4字節,ChunkData字段中數據的大小,單位:字節。

ChunkData:包含FormType和其他chunk的內容。

FormType:4字節,值為"WAVE"。

Data:其他chunk的內容。

(2).Format chunk

ID:4字節,值為"fmt ",最后一個字符是空格。

Size:4字節,數據字段(Data)包含的數據大小。如無擴展塊,則值為16;有擴展塊,則值為= 16 + 2字節擴展塊長度 + 擴展塊內容,或者值為18(只有擴展塊長度為2字節,并且擴展塊長度值為0),單位:字節。

Data:存放音頻格式、聲道數、采樣率等信息。

audio_format:2字節,表示音頻數據的格式。如值為1,表示使用PCM格式。

channels:2字節,聲道數。值為1則為單聲道,為2則是雙聲道。

sample_rate:4字節,采樣頻率,主要有22.05KHz,44.1kHz和48KHz等,例如0xAC44表示44100Hz。

bytes_per_sec:4字節,音頻的碼率,每秒播放的字節數。其值為:聲道數 * 采樣頻率 * 量化位數 / 8,可以估算出使用緩沖區的大小。

block_align:2字節,每個采樣點所需的字節數,其值為:聲道數 * 量化位數 / 8。

bits_per_sample:2字節,量化位數,有16位,24位和32位等。

cbSize:2字節,擴展塊的長度,其值可以為0或者22。

cbContent:0字節或22字節,擴展塊內容,具體介紹在下文提及。

備注:這個區域只需要關心channels,sample_rate,bits_per_sample三個參數就可以了,其它的都是依據這三個計算出來的。

(3).Fact chunk(可選)

fact chunk為可選的,在大多數的WAV文件中是不存在的。采用壓縮編碼的WAV文件,必須要有Fact chunk,該塊中只有一個數據,為每個聲道的采樣總數。

ID:4字節,值為"fact"。

Size:4字節,數據字段的長度,其值最小為4。

Data:采樣總數。

(4).Data chunk

ID:4字節,值為"data"。

Size:4字節,音頻數據的長度。

Data:具體的音頻數據內容存放在這里。

4、Format chunk中的音頻數據格式

在format chunk中,有一個字段audio_format,該字段表示音頻數據是以何種方式進行編碼存放的。其可選的取值有:

0x0001:WAVE_FORMAT_PCM,采用PCM格式,此時WAV文件中不包含Fact chunk。

0x0002:WAVE_FORMAT_ADPCM,此時WAV文件中包含Fact chunk。

0x0006:WAVE_FORMAT_ALAW,此時WAV文件中包含Fact chunk。

0x0007:WAVE_FORMAT_MULAW,此時WAV文件中包含Fact chunk。

0xFFFE:WAVE_FORMAT_EXTENSIBLE,具體的編碼方式由Format chunk中擴展塊的sub_format字段決定。

備注:一般情況下,我們遇到的WAV文件的音頻數據編碼格式是PCM,介紹上述內容,只是讓大家多了解下其他的編碼格式的值與名稱,當遇到這類編碼時,能夠知道其名稱,從而方便查詢相關資料

5、Format chunk中的擴展塊

當WAV文件使用的不是PCM編碼方式時,就需要擴展格式塊,它是在基本的Format chunk中又添加一段數據。該數據的前兩個字節,表示的是擴展塊的長度。緊接其后的是擴展塊的數據區,含有擴展的格式信息,其具體的長度取決于壓縮編碼的類型。當某種編碼方式的擴展塊的數據區長度為0,此時擴展塊只包含了擴展塊長度字段,擴展塊的長度字段還必須保留,只是其值設置為0。

擴展塊的各個字節的含義如下:

cbSize:2字節,擴展塊的長度,其值可以為0或者22。

cbContent:0字節或22字節,擴展塊內容。

valid_bits_per_sample:2字節,有效的采樣位數,最大值為block_align * 8。可以使用更靈活的量化位數,通常音頻sample的量化位數為8的倍數,但是使用了WAVE_FORMAT_EXTENSIBLE時,量化的位數由擴展塊中的valid_bits_per_sample來描述,可以小于Format chunk中指定的bits_per_sample。

channle_mask:4字節,聲道掩碼。

sub_format:16字節,數據格式碼。

在Format chunk中的audio_format設置為0xFFFE時,表示使用擴展區中的sub_format來決定音頻的數據的編碼方式。在以下幾種情況下必須要使用WAVE_FORMAT_EXTENSIBLE:

PCM數據的量化位數大于16。

音頻的采樣聲道大于2。

實際的量化位數不是8的倍數。

存儲順序和播放順序不一致,需要指定從聲道順序到聲卡播放順序的映射情況。

備注:一般情況下,我們遇到的WAV文件中是不含有擴展塊的。

6、聲音數據格式

Data chunk中的Data塊中存放的是音頻的采樣數據。每個sample按照采樣的時間順序寫入,對于使用多個字節的sample,使用小端模式存放(低位字節存放在低地址,高位字節存放在高地址)。對于多聲道的sample采用交叉存放的方式。例如:立體雙聲道的sample存儲順序為:聲道1的第一個sample,聲道2的第一個sample;聲道1的第二個sample,聲道2的第二個sample;依次類推....。

對于Data chunk中的Data字段,也就是音頻數據內容的存儲,根據聲道數和采樣位數的不同情況,布局如下(每1列代表8 bits):

(1).8 bit單聲道

采樣1 采樣2
數據1 數據2

(2).8 bit雙聲道

采樣1 采樣2
聲道1數據1 聲道2數據1 聲道1數據2 聲道2數據2

(3).16 bit單聲道

采樣1 采樣2
數據1低字節 數據1高字節 數據2低字節 數據2高字節

(4).16 bit雙聲道

聲道1采樣1 聲道2采樣1
聲道1數據1低字節 聲道1數據1高字節 聲道2數據1低字節 聲道2數據1高字節
聲道1采樣2 聲道2采樣2
聲道1數據2低字節 聲道1數據2高字節 聲道2數據2低字節 聲道2數據2高字節

7、WAV文件實例分析

利用winhex工具軟件可以非常方便的以十六進制查看文件,下圖是我用winhex軟件打開一個WAV音頻文件時的部分界面截圖:

e3bb4196-6d8a-11ee-939d-92fbcf53809c.png

2019-10-21_160033

下表對文件格式進行解讀:

偏移地址 字節數 16進制源碼 內容
00H 4 52 49 46 46 'RIFF'標識符
04H 4 F4 FE 83 01 數據長度:0x0183FEF4(注意順序)
08H 4 57 41 56 45 'WAVE'標識符
0CH 4 66 6D 74 20 'fmt ',最后一位為空格
10H 4 10 00 00 00 Format chunk大小:0x10
14H 2 01 00 編碼格式:0x01為PCM
16H 2 02 00 聲道數目:0x02為雙聲道
18H 4 44 AC 00 00 采樣頻率:0xAC44表示44100Hz
1CH 4 10 B1 02 00 每秒字節數:0x02B110
20H 2 04 00 每個采樣點所需的字節數:0x04
22H 2 10 00 量化位數:0x10
24H 4 64 61 74 61 'data'標識符
28H 4 48 FE 83 01 音頻數據的長度:0x0183FE48

從偏移量2CH開始就是音頻數據了。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 音頻
    +關注

    關注

    29

    文章

    2868

    瀏覽量

    81492
  • WAV
    WAV
    +關注

    關注

    0

    文章

    22

    瀏覽量

    19148
  • 編碼
    +關注

    關注

    6

    文章

    940

    瀏覽量

    54814
  • 文件
    +關注

    關注

    1

    文章

    565

    瀏覽量

    24727

原文標題:WAV文件格式詳解

文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于DWC2的USB驅動開發-UAC之WAV-PCM音頻文件格式詳解

    在做UAC,PWM音頻播放的項目,需要解析WAV格式文件,通過UAC發送,或接收PCM數據,驅動喇叭播放。這里對WAV文件格式相關內容進行整理備忘。
    的頭像 發表于 07-27 09:02 ?2193次閱讀
    基于DWC2的USB驅動開發-UAC之<b class='flag-5'>WAV</b>-PCM音頻<b class='flag-5'>文件格式</b><b class='flag-5'>詳解</b>

    RIFF文件格式簡介

    RIFF(Resources Interchange File Format)中文翻譯為資源互換文件格式,是Windows下大部分多媒體文件遵循的一種文件結構。
    的頭像 發表于 10-07 16:25 ?1727次閱讀
    RIFF<b class='flag-5'>文件格式</b>簡介

    MP3 文件格式資料

    MP3 文件格式資料
    發表于 04-08 03:37 ?22次下載

    如何光繪輸出AutoCAD文件格式

    教你光繪輸出AutoCAD文件格式
    發表于 06-07 15:16 ?36次下載

    .mpp文件格式打開軟件下載

    .mpp文件格式打開
    發表于 07-07 13:14 ?2517次下載

    適用于IPTV大并發應用的文件格式

    分析交互式網絡電視(IPTV)大并發應用的特性,提出一種適用于IPTV大并發應用的服務器內部文件格式cl4文件格式。該文件格式采用了符合IPTV大并發應用特性的音視頻數據交織、媒體數
    發表于 04-15 10:02 ?17次下載

    LabVIEW數據文件格式的視頻教程

    LabVIEW數據文件格式的視頻教程 LabVIEW數據文件格式之華山論
    發表于 03-26 12:16 ?113次下載

    數碼相機伴侶的文件格式

    數碼相機伴侶的文件格式              文件格式指的是數碼相機伴侶獨特的文件系統結構在
    發表于 12-23 10:05 ?876次閱讀

    GIF圖形文件格式文檔

    GIF圖形文件格式文檔 GIF圖形文件格式文檔 GIF圖形文件格式文檔
    發表于 05-24 10:53 ?2次下載

    GIF文件格式詳解

    GIF文件格式詳解 GIF文件格式詳解 GIF文件格式詳解
    發表于 05-24 10:53 ?2次下載

    了解LabVIEW數據文件格式

    LabVIEW數據文件格式之華山論劍視頻教程
    的頭像 發表于 06-25 00:13 ?4831次閱讀
    了解LabVIEW數據<b class='flag-5'>文件格式</b>

    一招教你快速解析WAV文件格式

    語音的播放出現問題。由于WAV采用PCM編碼,音質也十分不錯,于是考慮用STM32對WAV格式音頻文件進行解碼,上周末開始找資料和編程,其中也遇到了不少問題,不過功夫不負有心人,最終還
    的頭像 發表于 08-01 09:38 ?2.4w次閱讀
    一招教你快速解析<b class='flag-5'>WAV</b><b class='flag-5'>文件格式</b>

    STM32--hex文件格式

    ? ? hex 是 Intel 公司制定的一種使用 ASCII 文本記錄機器碼或常量數據的文件格式,它可以燒錄到MCU中,被MCU執行的一種文件格式。一個hex文件由多條記錄組成,而每條記錄由5個
    發表于 12-06 11:21 ?4次下載
    STM32--hex<b class='flag-5'>文件格式</b>

    常用對象文件格式

    電子發燒友網站提供《常用對象文件格式.pdf》資料免費下載
    發表于 10-15 09:25 ?0次下載
    常用對象<b class='flag-5'>文件格式</b>

    EPS文件格式如何轉換 EPS和SVG文件的區別

    EPS文件格式轉換 EPS(Encapsulated PostScript)是一種用于存儲矢量圖形的文件格式,最初由Adobe公司開發。由于EPS文件在打印時能夠保持極高的質量,并且廣泛被各種
    的頭像 發表于 11-19 10:31 ?403次閱讀
    主站蜘蛛池模板: GAY东北澡堂激情2022| 免费看亚洲| 亚洲国产AV无码综合在线| 调教玩弄奶头乳夹开乳震动器| 男女肉大捧进出全过程免费| 一级片mp4| 果冻传媒我的女老板| 午夜伦伦电影理论片大片| 丰满艳妇亲伦| 人妻熟女斩五十路0930| a免费视频| 欧美午夜精品久久久久久浪潮| 91麻豆久久| 美女张开腿让男生桶动态图| 这里只有精品在线视频| 久久免费看视频| 又黄又粗又爽免费观看| 久久国产精品无码视欧美| 亚洲区视频| 精品无人区麻豆乱码1区2| 亚婷婷洲AV久久蜜臀无码| 国产欧美二区综合| 午夜国产精品视频在线| 国产精品无码中文在线AV| 午夜免费福利小电影| 国产免费毛片在线观看| 小SAO货叫大声点妓女| 国产午夜精品美女免费大片| 亚洲高清免费在线观看| 簧片免费观看| 伊人影院亚洲| 老头xxx| 94色94色永久网站| 欧美末成年videos在线| www.色片| 四虎影院网红美女| 国产色情短视频在线网站| 亚洲精品免费在线视频| 久草热在线| 45分钟做受片免费观看| 年轻的女职工在线观看|