在無 Flash Player 情況下(如伺服器端、行動裝置、靜態分析工具)解析 SWF 檔案頭,可快速獲取版本、尺寸、幀率、總幀數、背景色等關鍵中繼資料,適用於內容審核、自動化處理、資產管理系統。
| 位移 | 長度 | 欄位 | 說明 |
|---|---|---|---|
| 0 | 3 | Signature | FWS (0x46 0x57 0x53) 未壓縮 / CWS (0x43 0x57 0x53) 壓縮 (Zlib, 從第 9 字節起) |
| 3 | 1 | Version | Flash Player 版本號(如 0x07 = FP7) |
| 4 | 4 | FileLength | 整個檔案長度(含檔頭),Little-Endian,單位 Byte |
| 8 | N | FrameSize (RECT) | 位元組對齊的矩形:Nbits (5 bits) + Xmin + Xmax + Ymin + Ymax,各佔 Nbits。Twips 單位 (1 px = 20 twips) |
| 8+N/8 | 2 | FrameRate | Fixed8.8 格式:高 8 位整數部、低 8 位小數部。通常小數部為 0。 |
| 10+N/8 | 2 | FrameCount | 總幀數,UI16 Little-Endian |
| 12+N/8 | 3 | BackgroundColor | RGB 各 1 字節 |
46 57 53 05 B4 66 07 00 70 00 0F A0 00 00 BB 80
00 0C 9F 03
46 57 53 = "FWS" (未壓縮)05 = Flash 5B4 66 07 00 → LE 0x000766B4 = 485,044 Bytes70 = 0b01110000 → 前 5 bits = 14 = NbitsXmin=0, Ymin=0, Xmax=8000, Ymax=6000 (twips) → 400×300 px00 0C → 整數部 0x0C = 12 fps9F 03 → LE 0x039F = 927 幀zlib.dll 的 uncompress,C# 用 System.IO.Compression.DeflateStream,Python 用 zlib.decompress()。(byteHigh + byteLow/256)。
swfdump -h file.swf 即時輸出檔頭資訊。