amf数据格式
来源:互联网 发布:淘宝卖的信用卡套现 编辑:程序博客网 时间:2024/06/09 23:56
原文地址为 http://blog.csdn.net/yeyumin89/article/details/7932585
复制黏贴下
这里有一个连接,amf0和amf3的库,我下了看了下,还是自己写吧,哎。http://wooce.iteye.com/blog/1396278
参考crtmpserver的代码写的,其中有amf.h文件。
AMF数据第一个byte为此数据的类型,类型有:
Number0×00double类型Boolean0×01bool类型String0×02string类型Object0×03object类型MovieClip0×04Not available in RemotingNull0×05null类型,空Undefined0×06Reference0×07MixedArray0×08EndOfObject0×09See Object ,表示object结束Array0x0aDate0x0bLongString0x0cUnsupported0x0dRecordset0x0eRemoting, server-to-client onlyXML0x0fTypedObject (Class instance)0×10AMF3 data0×11
Sent by Flash player 9+
对应的枚举就是:
public enum DataType{
Number = 00,// 0Boolean = 01,// 1String = 02,// 2UntypedObject = 03,// 3MovieClip = 04,// 4Null = 05,// 5Undefined = 06,// 6ReferencedObject = 07,// 7MixedArray = 08,// 8End = 09,// 9Array = 10,// 10Date = 11,// 11LongString = 12,// 12TypeAsObject = 13,// 13Recordset = 14,// 14Xml = 15,// 15TypedObject = 16,// 16AMF3data = 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兼容,我没有用,没有研究过。
常用的差不多了,至少我还没有用到其他的,当遇到了再写解析。
0 0
- amf数据格式
- AMF
- AMf
- AMF
- 数据格式
- 数据格式
- 数据格式
- 数据格式
- 什么是AMF?
- 什么是AMF?
- 什么是AMF?
- AMF协议
- AMF是什么
- AMF协议
- AMF数据类型
- AMF协议
- AMF协议
- AMF协议
- Cocoapods-Unable to satisfy the following requirements
- 什么是session
- java讲义(七)final修饰符
- 下一幕——人工智能
- URL分享
- amf数据格式
- 汇编语言-条件跳转指令
- Opera浏览器同步服务被黑,百万用户密码遭泄露
- C# 并发集合
- vim 脚本测试
- 管线命令
- iOS事件分发机制
- NKOI 2440 数字消除游戏
- 顶点漫反射.Shader