ASF(wmv,wma) ファイルフォーマット
ASF ファイルは Header Object から始まります。
ファイル操作をおこなう場合は、まず先頭から 16 バイト読み込み、それが Header Object の GUID であることを確認します。
詳しくはAdvanced Systems Format(ASF)仕様書を確認してください。
【ソースコード例】
snprintf(guid_text, 32, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7],
data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15]);
if (0 == strncasecmp( guid_text, GUID_ASF_Header_Object, 32 ) )
{
return SUCCESS;
}
else
{
return FAILURE;
}
Header Object
名前 | 型 | サイズ | | 内容 |
Object ID | GUID | Guid | 16 | 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C Object ID: 75B22630-668E-11CF-A6D9-00AA0062CE6C |
Object Size | QWORD | UInt64 | 8 | Header Object 全体のサイズ |
Number of Header Objects | DWORD | UInt32 | 4 | Header Object に含まれる、子オブジェクトの総数 |
Reserved1 | BYTE | byte | 1 | 予約領域 |
Reserved2 | BYTE | byte | 1 | 予約領域 |
Object Size は次のように計算します。
db e3 00 00 00 00 00 00
Object Size: 58331
0xE3DB = 58331
File Properties Object
名前 | 型 | サイズ | | 内容 |
Object ID | GUID | Guid | 16 | A1 DC AB 8C 47 A9 CF 11-8E E4 00 C0 0C 20 53 65 Object ID: 8CABDCA1-A947-11CF-8EE4-00C00C205365 |
Object Size | QWORD | UInt64 | 8 | File Properties Object 全体のサイズ |
File ID | GUID | Guid | 16 | 59 CE 60 36 54 CB 80 48 B5 80 1B AA D4 A9 E9 E6 File ID: 3660CE59-CB54-4880-B580-1BAAD4A9E9E6 |
File Size | QWORD | UInt64 | 8 | このサイズはasfのファイルのサイズと等しくなります |
Creation Date | QWORD | UInt64 | 8 | ファイルの作成日 ( UTC ) 1年間=31536000秒 |
Data Packets Count | QWORD | UInt64 | 8 | Windows Media Playerの統計情報に現れる受信したパケットに等しくなるはず。 |
Play Duration | QWORD | UInt64 | 8 | 再生時間 |
Send Duration | QWORD | UInt64 | 8 | 送信時間 |
Preroll | QWORD | UInt64 | 8 | ファイル再生を始める前に必要なバッファリング時間 |
Flags | DWORD | UInt32 | 4 | フラグ |
Minimum Data Packet Size | DWORD | UInt32 | 4 | 送信時における最小のデータパケットのサイズ |
Maximum Data Packet Size | DWORD | UInt32 | 4 | 送信時における最大のデータパケットのサイズ |
Maximum Bitrate | DWORD | UInt32 | 4 | 送信時における最大ビットレート |
コンテンツの再生時間を取得する場合は、Play Duration から Preroll を差し引く必要があります。
Stream Bitrate Properties Object
名前 | 型 | サイズ | | 内容 |
Object ID | GUID | Guid | 16 | 91 07 DC B7 B7 A9 CF 11 8E E6 00 C0 0C 20 53 65 Object ID: B7DC0791-A9B7-11CF-8EE6-00C00C205365 |
Object Size | QWORD | UInt64 | 8 | オブジェクト全体のサイズ |
Bitrate Records Count | WORD | UInt16 | 2 | Bitrate Records の総数 |
Header Extension Object
名前 | 型 | サイズ | | 内容 |
Object ID | GUID | Guid | 16 | B5 03 BF 5F 2E A9 CF 11 8E E3 00 C0 0C 20 53 65 Object ID: 5FBF03B5-A92E-11CF-8EE3-00C00C205365 |
Object Size | QWORD | UInt64 | 8 | オブジェクト全体のサイズ |
Reserved Field 1 | GUID | Guid | 16 | 予約領域 |
Reserved Field 2 | WORD | UInt16 | 2 | 予約領域 |
Header Extension Data Size | DWORD | UInt32 | 4 | 拡張ヘッダのバイト数 |
Language List Object
名前 | 型 | サイズ | | 内容 |
Object ID | GUID | Guid | 16 | A9 46 43 7C E0 EF FC 4B B2 29 39 3E DE 41 5C 85 Object ID: 7C4346A9-EFE0-4BFC-B229-393EDE415C85 |
Object Size | QWORD | UInt64 | 8 | オブジェクト全体のサイズ |
Language ID Records Count | WORD | UInt16 | 2 | 言語リストの総数 |
Extended Stream Properties Object
名前 | 型 | サイズ | | 内容 |
Object ID | GUID | Guid | 16 | CB A5 E6 14 72 C6 32 43 83 99 A9 69 52 06 5B 5A Object ID: 14E6A5CB-C672-4332-8399-A96952065B5A |
Object Size | QWORD | UInt64 | 8 | オブジェクト全体のサイズ |
Start Time | QWORD | UInt64 | 8 | 最初のオブジェクトのプレゼンテーション時間 |
End Time | QWORD | UInt64 | 8 | 最後のオブジェクトのプレゼンテーション時間 | |
Metadata Library Object
Header Extension Object 内のオブジェクトです。
名前 | 型 | サイズ | | 内容 |
Object ID | GUID | Guid | 16 | 94 1C 23 44 98 94 D1 49 A1 41 1D 13 4E 45 70 54 Object ID: 44231C94-9498-49D1-A141-1D134E457054 |
Object Size | QWORD | UInt64 | 8 | オブジェクト全体のサイズ |
Description Records Count | WORD | UInt16 | 2 | メタデータの総数 |
Data Object
名前 | 型 | サイズ | | 内容 |
Object ID | GUID | Guid | 16 | 36 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C Object ID: 75B22636-668E-11CF-A6D9-00AA0062CE6C |
Object Size | QWORD | UInt64 | 8 | オブジェクト全体のサイズ |
File ID | GUID | Guid | 16 |
|
Total Data Packets | QWORD | UInt64 | 8 | Data Objectに存在するエントリーの数 |
Reserved Field | WORD | UInt16 | 16 | 予約領域 |
Data Packets | | | | 実データ |
GUID 一覧
GUIDとバイナリダンプの一覧です。
Top-level ASF object GUIDs
ASF Header Object | {75B22630-668E-11CF-A6D9-00AA0062CE6C} | 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C |
ASF Data Object | {75B22636-668E-11CF-A6D9-00AA0062CE6C} | 36 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C |
ASF Simple Index Object | {33000890-E5B1-11CF-89F4-00A0C90349CB} | 90 08 00 33 B1 E5 CF 11 89 F4 00 A0 C9 03 49 CB |
ASF Index Object | {D6E229D3-35DA-11D1-9034-00A0C90349BE} | D3 29 E2 D6 DA 35 D1 11 90 34 00 A0 C9 03 49 BE |
ASF Media Object Index Object | {FEB103F8-12AD-4C64-840F-2A1D2F7AD48C} | F8 03 B1 FE AD 12 64 4C 84 0F 2A 1D 2F 7A D4 8C |
ASF Timecode Index Object | {3CB73FD0-0C4A-4803-953D-EDF7B6228F0C} | D0 3F B7 3C 4A 0C 03 48 95 3D ED F7 B6 22 8F 0C |
Header Object GUIDs
ASF File Properties Object | {8CABDCA1-A947-11CF-8EE4-00C00C205365} | A1 DC AB 8C 47 A9 CF 11 8E E4 00 C0 0C 20 53 65 |
ASF Stream Properties Object | {B7DC0791-A9B7-11CF-8EE6-00C00C205365} | 91 07 DC B7 B7 A9 CF 11 8E E6 00 C0 0C 20 53 65 |
ASF Header Extension Object | {5FBF03B5-A92E-11CF-8EE3-00C00C205365} | B5 03 BF 5F 2E A9 CF 11 8E E3 00 C0 0C 20 53 65 |
ASF Codec List Object | {86D15240-311D-11D0-A3A4-00A0C90348F6} | 40 52 D1 86 1D 31 D0 11 A3 A4 00 A0 C9 03 48 F6 |
ASF Script Command Object | {1EFB1A30-0B62-11D0-A39B-00A0C90348F6} | 30 1A FB 1E 62 0B D0 11 A3 9B 00 A0 C9 03 48 F6 |
ASF Marker Object | {F487CD01-A951-11CF-8EE6-00C00C205365} | 01 CD 87 F4 51 A9 CF 11 8E E6 00 C0 0C 20 53 65 |
ASF Bitrate Mutual Exclusion Object | {D6E229DC-35DA-11D1-9034-00A0C90349BE} | DC 29 E2 D6 DA 35 D1 11 90 34 00 A0 C9 03 49 BE |
ASF Error Correction Object | {75B22635-668E-11CF-A6D9-00AA0062CE6C} | 35 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C |
ASF Content Description Object | {75B22633-668E-11CF-A6D9-00AA0062CE6C} | 33 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C |
ASF Extended Content Description Object | {D2D0A440-E307-11D2-97F0-00A0C95EA850} | 40 A4 D0 D2 07 E3 D2 11 97 F0 00 A0 C9 5E A8 50 |
ASF Content Branding Object | {2211B3FA-BD23-11D2-B4B7-00A0C955FC6E} | FA B3 11 22 23 BD D2 11 B4 B7 00 A0 C9 55 FC 6E |
ASF Stream Bitrate Properties Object | {7BF875CE-468D-11D1-8D82-006097C9A2B2} | CE 75 F8 7B 8D 46 D1 11 8D 82 00 60 97 C9 A2 B2 |
Header Extension Object GUIDs
ASF Extended Stream Properties Object | {14E6A5CB-C672-4332-8399-A96952065B5A} | CB A5 E6 14 72 C6 32 43 83 99 A9 69 52 06 5B 5A |
ASF Advanced Mutual Exclusion Object | {A08649CF-4775-4670-8A16-6E35357566CD} | CF 49 86 A0 75 47 70 46 8A 16 6E 35 35 75 66 CD |
ASF Group Mutual Exclusion Object | {D1465A40-5A79-4338-B71B-E36B8FD6C249} | 40 5A 46 D1 79 5A 38 43 B7 1B E3 6B 8F D6 C2 49 |
ASF Stream Prioritization Object | {D4FED15B-88D3-454F-81F0-ED5C45999E24} | 5B D1 FE D4 D3 88 4F 45 81 F0 ED 5C 45 99 9E 24 |
ASF Bandwidth Sharing Object | {A69609E6-517B-11D2-B6AF-00C04FD908E9} | E6 09 96 A6 7B 51 D2 11 B6 AF 00 C0 4F D9 08 E9 |
ASF Language List Object | {7C4346A9-EFE0-4BFC-B229-393EDE415C85} | A9 46 43 7C E0 EF FC 4B B2 29 39 3E DE 41 5C 85 |
ASF Metadata Object | {C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA} | EA CB F8 C5 AF 5B 77 48 84 67 AA 8C 44 FA 4C CA |
ASF Metadata Library Object | {44231C94-9498-49D1-A141-1D134E457054} | 94 1C 23 44 98 94 D1 49 A1 41 1D 13 4E 45 70 54 |
ASF Index Parameters Object | {D6E229DF-35DA-11D1-9034-00A0C90349BE} | DF 29 E2 D6 DA 35 D1 11 90 34 00 A0 C9 03 49 BE |
ASF Media Object Index Parameters Object | {6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7} | AD 3B 20 6B 11 3F E4 48 AC A8 D7 61 3D E2 CF A7 |
ASF Timecode Index Parameters Object | {F55E496D-9797-4B5D-8C8B-604DFE9BFB24} | 6D 49 5E F5 97 97 5D 4B 8C 8B 60 4D FE 9B FB 24 |
ASF Compatibility Object | {75B22630-668E-11CF-A6D9-00AA0062CE6C} | 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C |
ASF Advanced Content Encryption Object | {43058533-6981-49E6-9B74-AD12CB86D58C} | 33 85 05 43 81 69 E6 49 9B 74 AD 12 CB 86 D5 8C |
ASF Content Encryption Object | {2211B3FB-BD23-11D2-B4B7-00A0C955FC6E} | FB B3 11 22 23 BD D2 11 B4 B7 00 A0 C9 55 FC 6E |
ASF Extended Content Encryption Object | {298AE614-2622-4C17-B935-DAE07EE9289C} | 14 E6 8A 29 22 26 17 4C B9 35 DA E0 7E E9 28 9C |
ASF Digital Signature Object | {2211B3FC-BD23-11D2-B4B7-00A0C955FC6E} | FC B3 11 22 23 BD D2 11 B4 B7 00 A0 C9 55 FC 6E |
ASF Padding Object | {1806D474-CADF-4509-A4BA-9AABCB96AAE8} | 74 D4 06 18 DF CA 09 45 A4 BA 9A AB CB 96 AA E8 |
Stream Properties Object Stream Type GUIDs
ASF Audio Media | {F8699E40-5B4D-11CF-A8FD-00805F5C442B} | 40 9E 69 F8 4D 5B CF 11 A8 FD 00 80 5F 5C 44 2B |
ASF Video Media | {BC19EFC0-5B4D-11CF-A8FD-00805F5C442B} | C0 EF 19 BC 4D 5B CF 11 A8 FD 00 80 5F 5C 44 2B |
ASF Command Media | {59DACFC0-59E6-11D0-A3AC-00A0C90348F6} | C0 CF DA 59 E6 59 D0 11 A3 AC 00 A0 C9 03 48 F6 |
ASF JFIF Media | {B61BE100-5B4E-11CF-A8FD-00805F5C442B} | 00 E1 1B B6 4E 5B CF 11 A8 FD 00 80 5F 5C 44 2B |
ASF Degradable JPEG Media | {35907DE0-E415-11CF-A917-00805F5C442B} | E0 7D 90 35 15 E4 CF 11 A9 17 00 80 5F 5C 44 2B |
ASF File Transfer Media | {91BD222C-F21C-497A-8B6D-5AA86BFC0185} | 2C 22 BD 91 1C F2 7A 49 8B 6D 5A A8 6B FC 01 85 |
ASF Binary Media | {3AFB65E2-47EF-40F2-AC2C-70A90D71D343} | E2 65 FB 3A EF 47 F2 40 AC 2C 70 A9 0D 71 D3 43 |
Web stream Type-Specific Data GUIDs
ASF Web Stream Media Subtype | {776257D4-C627-41CB-8F81-7AC7FF1C40CC} | D4 57 62 77 27 C6 CB 41 8F 81 7A C7 FF 1C 40 CC |
ASF Web Stream Format | {DA1E6B13-8359-4050-B398-388E965BF00C} | 13 6B 1E DA 59 83 50 40 B3 98 38 8E 96 5B F0 0C |
Stream Properties Object Error Correction Type GUIDs
ASF No Error Correction | {20FB5700-5B55-11CF-A8FD-00805F5C442B} | 00 57 FB 20 55 5B CF 11 A8 FD 00 80 5F 5C 44 2B |
ASF Audio Spread | {BFC3CD50-618F-11CF-8BB2-00AA00B4E220} | 50 CD C3 BF 8F 61 CF 11 8B B2 00 AA 00 B4 E2 20 |
Header Extension Object GUIDs
ASF Reserved 1 | {ABD3D211-A9BA-11CF-8EE6-00C00C205365} | 11 D2 D3 AB BA A9 CF 11 8E E6 00 C0 0C 20 53 65 |
Advanced Content Encryption Object System ID GUIDs
ASF Content Encryption System Windows Media DRM Network Devices | {7A079BB6-DAA4-4E12-A5CA-91D38DC11A8D} | B6 9B 07 7A A4 DA 12 4E A5 CA 91 D3 8D C1 1A 8D |
Codec List Object GUIDs
ASF Reserved 2 | {86D15241-311D-11D0-A3A4-00A0C90348F6} | 41 52 D1 86 1D 31 D0 11 A3 A4 00 A0 C9 03 48 F6 |
Script Command Object GUIDs
ASF Reserved 3 | {4B1ACBE3-100B-11D0-A39B-00A0C90348F6} | E3 CB 1A 4B 0B 10 D0 11 A3 9B 00 A0 C9 03 48 F6 |
Marker Object GUIDs
ASF Reserved 4 | {4CFEDB20-75F6-11CF-9C0F-00A0C90349CB} | 20 DB FE 4C F6 75 CF 11 9C 0F 00 A0 C9 03 49 CB |
Mutual Exclusion Object Exclusion Type GUIDs
ASF Mutex Language | {D6E22A00-35DA-11D1-9034-00A0C90349BE} | 00 2A E2 D6 DA 35 D1 11 90 34 00 A0 C9 03 49 BE |
ASF Mutex Bitrate | {D6E22A01-35DA-11D1-9034-00A0C90349BE} | 01 2A E2 D6 DA 35 D1 11 90 34 00 A0 C9 03 49 BE |
ASF Mutex Unknown | {D6E22A02-35DA-11D1-9034-00A0C90349BE} | 02 2A E2 D6 DA 35 D1 11 90 34 00 A0 C9 03 49 BE |
Bandwidth Sharing Object GUIDs
ASF Bandwidth Sharing Exclusive | {AF6060AA-5197-11D2-B6AF-00C04FD908E9} | AA 60 60 AF 97 51 D2 11 B6 AF 00 C0 4F D9 08 E9 |
ASF Bandwidth Sharing Partial | {AF6060AB-5197-11D2-B6AF-00C04FD908E9} | AB 60 60 AF 97 51 D2 11 B6 AF 00 C0 4F D9 08 E9 |
Standard Payload Extension System GUIDs
ASF Payload Extension System Timecode | {399595EC-8667-4E2D-8FDB-98814CE76C1E} | EC 95 95 39 67 86 2D 4E 8F DB 98 81 4C E7 6C 1E |
ASF Payload Extension System File Name | {E165EC0E-19ED-45D7-B4A7-25CBD1E28E9B} | 0E EC 65 E1 ED 19 D7 45 B4 A7 25 CB D1 E2 8E 9B |
ASF Payload Extension System Content Type | {D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC} | 20 DC 90 D5 BC 07 6C 43 9C F7 F3 BB FB F1 A4 DC |
ASF Payload Extension System Pixel Aspect Ratio | {1B1EE554-F9EA-4BC8-821A-376B74E4C4B8} | 54 E5 1E 1B EA F9 C8 4B 82 1A 37 6B 74 E4 C4 B8 |
ASF Payload Extension System Sample Duration | {C6BD9450-867F-4907-83A3-C77921B733AD} | 50 94 BD C6 7F 86 07 49 83 A3 C7c 79 21 B7 33 AD |
ASF Payload Extension System Encryption Sample ID | {6698B84E-0AFA-4330-AEB2-1C0A98D7A44D} | 4E B8 98 66 FA 0A 30 43 AE B2 1C 0A 98 D7 A4 4D |
実データ例
00000101 30 26 b2 75 8e 66 cf 11 a6 d9 00 aa 00 62 ce 6c 0&.u.f.. .....b.l → ASF_Header_Object
00000111 db e3 00 00 00 00 00 00 06 00 00 00 01 02 a1 dc ........ ........ → ASF_File_Properties_Object
00000121 ab 8c 47 a9 cf 11 8e e4 00 c0 0c 20 53 65 68 00 ..G..... ... Seh.
00000131 00 00 00 00 00 00 a6 b9 08 cc f9 94 64 4f 92 2b ........ ....dO.+
00000141 4e 67 0c ba 6b e8 f7 01 00 00 00 00 00 00 f1 97 Ng..k... ........
00000151 76 01 80 be cd 01 ff ff ff ff 00 00 00 00 00 00 v....... ........
00000161 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b8 0b ........ ........
00000171 00 00 00 00 00 00 09 00 00 00 ba 0b 00 00 ba 0b ........ ........
00000181 00 00 46 fc 00 00 ce 75 f8 7b 8d 46 d1 11 8d 82 ..F....u .{.F.... → ASF_Stream_Bitrate_Properties_Object
00000191 00 60 97 c9 a2 b2 20 00 00 00 00 00 00 00 01 00 .`.... . ........
000001A1 01 00 46 fc 00 00 91 07 dc b7 b7 a9 cf 11 8e e6 ..F..... ........ → ASF_Stream_Properties_Object
000001B1 00 c0 0c 20 53 65 72 00 00 00 00 00 00 00 40 9e ... Ser. ......@.
000001C1 69 f8 4d 5b cf 11 a8 fd 00 80 5f 5c 44 2b 50 cd i.M[.... .._\D+P.
000001D1 c3 bf 8f 61 cf 11 8b b2 00 aa 00 b4 e2 20 00 00 ...a.... ..... ..
000001E1 00 00 00 00 00 00 1c 00 00 00 08 00 00 00 01 00 ........ ........
000001F1 00 00 00 00 61 01 02 00 44 ac 00 00 43 1f 00 00 ....a... D...C...
00000201 9d 0b 10 00 0a 00 00 88 00 00 0f 00 00 00 00 00 ........ ........
00000211 01 9d 0b 9d 0b 01 00 00 b5 03 bf 5f 2e a9 cf 11 ........ ..._.... → ASF_Header_Extension_Object
00000221 8e e3 00 c0 0c 20 53 65 53 de 00 00 00 00 00 00 ..... Se S.......
00000231 11 d2 d3 ab ba a9 cf 11 8e e6 00 c0 0c 20 53 65 ........ ..... Se
00000241 06 00 25 de 00 00 a9 46 43 7c e0 ef fc 4b b2 29 ..%....F C|...K.) → ASF_Language_List_Object
00000251 39 3e de 41 5c 85 34 00 00 00 00 00 00 00 02 00 9>.A\.4. ........
00000261 0c 65 00 6e 00 2d 00 75 00 73 00 00 00 0c 6a 00 .e.n.-.u .s....j.
00000271 61 00 2d 00 4a 00 50 00 00 00 cb a5 e6 14 72 c6 a.-.J.P. ......r. → ASF_Extended_Stream_Properties_Object
00000281 32 43 83 99 a9 69 52 06 5b 5a 58 00 00 00 00 00 2C...iR. [ZX.....
00000291 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
000002A1 00 00 18 fa 00 00 b8 0b 00 00 00 00 00 00 18 fa ........ ........
000002B1 00 00 b8 0b 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
000002C1 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
000002D1 00 00 94 1c 23 44 98 94 d1 49 a1 41 1d 13 4e 45 ....#D.. .I.A..NE → ASF_Metadata_Library_Object
000002E1 70 54 1f dd 00 00 00 00 00 00 0a 00 01 00 00 00 pT...... ........
....