amf数据格式

转载 2016年08月29日 17:59:20

原文地址为 http://blog.csdn.net/yeyumin89/article/details/7932585


复制黏贴下

这里有一个连接,amf0和amf3的库,我下了看了下,还是自己写吧,哎。http://wooce.iteye.com/blog/1396278

参考crtmpserver的代码写的,其中有amf.h文件。
 
 
AMF数据第一个byte为此数据的类型,类型有:
Number 0×00 double类型
Boolean 0×01 bool类型
String 0×02 string类型
Object 0×03 object类型
MovieClip 0×04 Not available in Remoting
Null 0×05 null类型,空
Undefined 0×06
Reference 0×07
MixedArray 0×08
EndOfObject 0×09 See Object ,表示object结束
Array 0x0a
Date 0x0b
LongString 0x0c
Unsupported 0x0d
Recordset 0x0e Remoting, server-to-client only
XML 0x0f
TypedObject (Class instance) 0×10
AMF3 data 0×11

Sent by Flash player 9+

 

对应的枚举就是:

public enum DataType{
Number = 00,// 0
Boolean = 01,// 1
String = 02,// 2
UntypedObject = 03,// 3
MovieClip = 04,// 4
Null = 05,// 5
Undefined = 06,// 6
ReferencedObject = 07,// 7
MixedArray = 08,// 8
End = 09,// 9
Array = 10,// 10
Date = 11,// 11
LongString = 12,// 12
TypeAsObject = 13,// 13
Recordset = 14,// 14
Xml = 15,// 15
TypedObject = 16,// 16
AMF3data = 17// 17
}
 
 
rtmp协议中数据都是大端的,所以在放数据前都要将数据转成大端的形式。
 
number类型其实就是double,占8bytes。比如:00 00 00 00 00 00 00 00,第一个byte为amf类型,其后8bytes为double值0.0。
 
 
boolean就是布尔类型,占用1byte。比如:01 00,第一个byte为amf类型,其后1byte是值,false。
 
 
string就是字符类型,一个byte的amf类型,两个bytes的字符长度,和N个bytes的数据。比如:02 00 02 33 22,第一个byte为amf类型,其后两个bytes为长度,注意这里的00 02是大端模式,33 22是字符数据。
 
 
null是空,只有一个byte,0x05。
 
 
object类型要复杂点,第一个byte是03表示object,其后跟的是N个(key+value)。最后以00 00 09表示object结束。
key是一个字符串组成:2bytes的长度,N bytes的数据,就是表示value的作用,相当于value的名字。
value可以使amf任意一种类型,包括object。格式和单独的amf type一样,如果是object的话,相当于在里面再嵌套一个object。
level(key)后面的status就是value,此value是string类型,所以格式是上面提到的string类型(0x02)。
 
 
ECMA_ARRAY(0x08)实际上和object差不多,只是在0x08类型后面多了4个bytes的记录总共多少items的东西,目测全部填00也可以,也是以00 00 09结束。
 
 
0x11类型是amf3的类型,amf3实际上外层是封了一层amf0,为了与amf0兼容,我没有用,没有研究过。
 
 
 
常用的差不多了,至少我还没有用到其他的,当遇到了再写解析。大笑大笑

AMF序列格式详细介绍

AMF目前有两种版本,AMF0和AMF3,他们在数据类型的定义上有细微不同。关于AMF的官方文档参见这里。   Type Byte code Notes Number 0×00 B...
  • u010680536
  • u010680536
  • 2016年12月19日 10:21
  • 700

RTMP协议中的AMF数据类型说明

这里有一个连接,amf0和amf3的库,我下了看了下,还是自己写吧,哎。http://wooce.iteye.com/blog/1396278 参考crtmpserver的代码写的,其中有amf.h文...
  • leiych
  • leiych
  • 2014年01月14日 19:53
  • 2147

RTMP协议分析 二、AMF数据

原文出自:http://www.cnweblog.com/fly2700/archive/2008/04/09/281432.html Rtmp包默认的最大长度为128字节,(或通过chunks...
  • huangshanchun
  • huangshanchun
  • 2015年05月19日 19:00
  • 725

AMF格式文件

  • 2013年04月28日 13:51
  • 107KB
  • 下载

AMF3

转:http://hi.baidu.com/lanwujiya/blog/item/025b20ef4f037af1b3fb9522.html Flash Remoting的核心技术——AMFAMF是...
  • foart
  • foart
  • 2010年01月26日 14:20
  • 1923

AMF协议格式详解(Action+Message+Format+--+AMF+3中文版.pdf)

  • 2011年03月23日 04:03
  • 411KB
  • 下载

FLASH 之 AMF 格式

一、什么是AMF AMF是Flash与服务器进行通信的一种编码格式(为了方便理解,你可以暂时把它理解为与XML相似的技术),但它是以二进制数据进行传输的,客户端采用POST形式进行数据提交,它的最大...
  • houxq123
  • houxq123
  • 2014年09月24日 17:21
  • 1160

rtmp的消息类型

原文地址:http://blog.chinaunix.net/uid-26000296-id-3365019.html 拷贝黏贴 Abstract This document des...
  • ddr77
  • ddr77
  • 2016年09月01日 11:24
  • 793

amf-file-format-spec

  • 2013年06月07日 10:38
  • 107KB
  • 下载

amf数据格式

原文地址为 http://blog.csdn.net/yeyumin89/article/details/7932585 复制黏贴下 这里有一个连接,amf0和amf3的库,我下了看了下,...
  • ddr77
  • ddr77
  • 2016年08月29日 17:59
  • 1329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:amf数据格式
举报原因:
原因补充:

(最多只允许输入30个字)