wav文件格式及ffmpeg處理命令 WAV文件格式 wav文件格式分析

wav文件頭詳解html

符合RIFF(Resource Interchange File Format)規範的wav文件的文件頭記錄了音頻流的編碼參數等基本信息。wav文件由多個塊組成,至少包含RIFF標誌塊、格式塊、數據頭塊和數據塊,全部數據均以小端模式存儲。(小端模式:按順序讀取時,先讀取的是數據的低位部分,後讀取的是數據的高位部分。如數據0x11, 0x00表明的是十六進制數0x0011,也就是3)。java

通常的wav文件頭由如下數據組成:post

偏移地址 字節數 數據類型 內容
00H ~ 03H 4 char "RIFF", 資源交換文件RIFF標誌,固定不變
04H ~ 07H 4 long

文件長度,從下個字節開始到文件結束的總字節數。編碼

計算結果爲文件大小(能夠從文件屬性中看)+8個字節(00H~07H)url

08H ~ 0BH 4 char "WAVE", WAVE文件標誌,固定不變
0CH ~ 0FH 4 char "fmt ", fmt標誌(最後一位爲空格),固定不變
10H ~ 13H 4 long 格式長度,通常爲00000010H(=16),表明16PCM(量化結果爲16bit)
14H ~ 15H 2 int 格式類別,1表示線性PCM編碼
16H ~ 17H 2 int 通道數,1爲單聲道,2爲雙聲道
18H ~ 1BH 4 long 採樣頻率(每秒的樣本數)
1CH ~ 1FH 4 long 每秒字節數,其值爲:採樣頻率*通道數*樣本數據位數/8
20H ~ 21H 2 int DATA數據塊的調整數(字節),其值爲:通道數*樣本數據位數/8
22H ~ 23H 2 int 樣本數據位數,0010H即16,表明一個量化兩本佔2字節
24H ~ 27H 4 char "data", data數據塊標誌,固定不變
28H ~ 2BH 4 long wav文件音頻數據所佔大小
2CH ~ ... ...   真正存儲的音頻數據(不屬於文件頭了)

上面是通常wav文件的文件頭數據,而經過ffmpeg轉碼的wav文件於此有些差距,在格式塊和數據頭塊之間添加了一些ffmpeg的信息,以下圖。spa

偏移地址 字節數 數據類型 內容
00H ~ 23H 36   同上表的00H~23H一致
24H ~ 27H 4 char "LIST", LIST塊標誌,固定不變
28H ~ 2BH 4 long LIST塊佔用的字節數,在這裏爲26字節
2CH ~ 45H 26   LIST塊內容
46H ~ 49H 4 char "data", data數據塊標誌,固定不變
4AH ~ 4DH 4 long wav文件音頻數據所佔大小

 

ffmpeg處理命令.net

1. 將格式不正確的wav文件轉碼爲ffmpeg格式的wav文件:code

  ffmpeg -i "sourceFile" -y "targetFile"orm

2. 將mp3文件轉碼爲ffmpeg格式的wav文件(編碼格式爲16PCM、小端模式):htm

  ffmpeg -i "sourceFile" -acodec pcm_s16le -y "targetFile"

 3. 音頻切割:

  ffmpeg -i "sourceFile" -ss startTime -to endTime -y "targetFile"(按起點和終點切割)

  ffpmeg -i "sourceFile" -ss startTime -t duration -y "targetFile"(按起點和持續時間切割)

 

參考文章

1. WAV文件格式

2. wav文件詳解

3. wav文件格式分析

4. FFmpeg介紹及參數詳細說明

5. java切割wav音頻文件

6. java讀取wav文件(波形文件)並繪製波形圖的方法

7. WAV格式中常見的壓縮編碼

相關文章
相關標籤/搜索