RIFF (Resource Interchange File Format) 格式於 1991 由微軟及 IBM 提出,將 IFF (Interchange File Format) 的位元組順序改成用 little-endian,也用於微軟其它影音檔,如 AVI、ANI 等。Apple 的 AIFF 是 1988 改自 IFF,但使用 big-endian。
RIFF 資料存成許多有標記的區塊 (chunk),包括 4-byte 的區塊標記、4-byte 內容長度、及內容資料,如果長度不是偶數最後再填補一個位元組。
區塊的基本架構如下:
4-byte ASCII 標記 |
4-byte 內容長度 (in byte) |
內容資料 (如果內容長度不是偶數,填補一個 byte) |
RIFF 檔案本身就是一個標記為 "RIFF" 大區塊,其內容資料包含一個 4-byte 檔案標記及其它子區塊。WAV 檔的檔案標記是 "WAVE" ,子區塊有 "fmt " 及 "data" 等,架構如下:
"RIFF" | |||||||
內容長度 = 檔案大小 - 8 | |||||||
|
"fmt " 區塊格式如下,內容資料至少 16 bytes,:
|
Format Code | Data | Extension |
---|---|---|
1 | PCM | no |
3 | IEEE float | |
6 | 8-bit G.711 A-law | |
7 | 8-bit G.711 µ-law | |
0xFFFE (EXTENSIBLE) | Extensible 由 SubFormat 決定 |
如單聲道取樣頻率 8000 Hz 的 PCM WAV 檔:
"RIFF" | ||||||||||||
檔案大小 -8 | ||||||||||||
"WAVE" | ||||||||||||
| ||||||||||||
|
音樂 CD (CDDA) 是 44100 Hz、雙聲道的線性 PCM。範例:
檔案 offset | 長度 | 檔案內容 | 說明 |
---|---|---|---|
0x00000000 = 0 | 4 | 5249 4646 | "RIFF" |
0x00000004 = 4 | 4 | 76f4 7c02 | 長度 = 0x027cf476 = 41743478 下個 chunk 位於 0x8 + 0x027cf476 = 0x027cf47e |
0x00000008 = 8 | 4 | 5741 5645 | WAVE |
0x0000000c = 12 | 4 | 666d 7420 | "fmt " |
0x00000010 = 16 | 4 | 1200 0000 | 長度 = 0x00000012 = 18 下個 chunk 位於 20 + 18 = 38 = 0x26 |
0x00000014 = 20 | 18 | 0100 0200 44ac 0000 10b1 0200 0400 1000 0000 | 0x0001 = PCM 頻道數 = 0x0002 取樣率 = 0x0000ac44 = 44100 資料率 = 0x0002b110 = 176400 block size = 0x0004 = 4 bit/sample = 0x0010 = 16 extension size = 0x0000 = 0 |
0x00000026 = 38 | 4 | 6461 7461 | data |
0x0000002a = 42 | 4 | c0f3 7c02 | 長度 = 0x027cf3c0 = 41743296 下個 chunk 位於 0x2e + 0x27cf3c0 = 0x27cf3ed 236.64 秒 |
0x0000002e = 46 | 41743296 | 0000 .... | PCM 資料 |
0x027cf3ee | 4 | 4c49 5354 | "LIST" |
0x027cf3f2 | 4 | 8800 0000 | 長度 = 0x00000088 = 136 下個 chunk 位於 0x27cf3f6 + 0x88 = 0x27cf47e |
0x027cf3f6 | 136 | 494e464f 49415254 0e000000 52494646494e46ef5f4941525400 49434d54 0e000000 52494646494e464f5f49434d5400 49435244 0e000000 52494646494e464f5f4943524400 49474e52 0e000000 52494646494e464f5f49474e5200 494e414d 0e000000 52494646494e464f5f494e414d00 49535243 0e000000 52494646494e464f5f4953524300 | "INFO" "IART" (artist) 長度 0x0e "RIFFINFO_IART" "ICMT" (comment) 長度 0x0e "RIFFINFO_ICMT" "ICRD" 長度 0x0e "RIFFINFO_ICRD" "IGNR" 長度 0x0e "RIFFINFO_IGNR" "INAM" 長度 0x0e "RIFFINFO_INAM" "ISRC" 長度 0x0e "RIFFINFO_ISRC" |
其它區塊
- LIST
- fact
參考:
- RIFF (wikipedia)
- Audio File Format Specifications
- MP3 (MPEG-1 Audio Layer 3):有損壓縮音訊大幅降低資料量,然而音質沒有明顯的下降。
- WMA (Windows Medis Audio):有損壓縮音訊可比 MP3 體積小一倍,但音質差不多 (高位元音質的渲染力較不足)。
- WMA Pro
- WMA Lossless
- WMA Voice
- AAC (Advanced Audio Coding) 有損壓縮音訊
- aptX