AMF (Action Message Format)

2022-09-11  本文已影响0人  给艺艺一个未来

介绍

AMF(Action Message Format)是一种 binary format,用于序列化 object 比如 ActionScript object 或 XML,用于 client 和 server 间的通信。

AMF 通常与 Adobe 的 RTMP 结合使用,用于序列化建连和控制流媒体传输的命令。

AMF 序列化的二进制通常表示为:Type [Length] Value [Object End]

AMF 在发展的过程中存在两个版本,分别是 AMF0 和 AMF3 。

AMF0

AMF0 支持的 Type :

AMF 0

示例
使用 AMF0 序列化 AMF-Object :

var person:Object = {name:'Mike', age:'30', alias:'Mike'};
var stream:ByteArray = new ByteArray();
stream.objectEncoding = ObjectEncoding.AMF0; // ByteArray defaults to AMF3
stream.writeObject(person);

person:Object 的二进制格式:

03 00 04 6e 61 6d 65 02 00 04 4d 69 6b 65 00 03 61 67 65 00 40 3e 00 00 00 
00 00 00 00 05 61 6c 69 61 73 02 00 04 4d 69 6b 65 00 00 09

解释:

03 ------------------------------------------ Object (type)
00 04  -------------------------------------- 4 bytes (length)
6e 61 6d 65  -------------------------------- name (value)
02 ------------------------------------------ String (type)
00 04 --------------------------------------- 4 bytes (length)
4d 69 6b 65 --------------------------------- Mike (value)
00 03 --------------------------------------- 3 bytes (length)
61 67 65 ------------------------------------ age (value)
00 ------------------------------------------ Number (type)
40 3e 00 00 00 00 00 00 --------------------- 30 (value)
00 05 --------------------------------------- 5 bytes (length)
61 6c 69 61 73 ------------------------------ alias (value)
02 ------------------------------------------ String (type)
00 04 --------------------------------------- 4 bytes (length)
4d 69 6b 65 --------------------------------- Mike (value)
00 00 09 ------------------------------------ Object End (type)

AMF3

amf3-file-format-spec

上一篇下一篇

猜你喜欢

热点阅读