小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

RTMP協議分析 二、AMF數據

 shaobin0604@163.com 2012-01-10
Rtmp包默認的最大長度為128字節(jié),(或通過chunksize改變rtmp包最大長度), 當AMF數據超過128Byte的時候就可能有多個rtmp包組成,如果需要解碼的rtmp包太長則被TCP協議分割成多個TCP包.那么解碼的時候需要 先將包含rtmp包的tcp封包合并, 再把合并的數據解碼,解碼后可得到amf格式的數據,將這些AMF數據取出來就可以對AMF數據解碼了.
RTMP封包包括包頭和AMF數據2部分,AMF數據里面可以是命令也可以是音視頻數據。組成服務器和Flash客戶端之間的所有數據都是用AMF格式的數據在傳送,例如connect() publish()等命令. AMF數據由2部分組成: ObjType 加上 ObjValue。ObjType的大小為一個字節(jié)。ObjValue的大小不固定,和ObjType相關。 常用的ObjType類型和對應的ObjValue大小整理如下,詳細的ObjType的數據在本文的最下面列出:
類型說明(ObjType)       數據  dataSize
CORE_String 0x02   2字節(jié) (2字節(jié)的數據紀錄了String的實際長度)
CORE_Object  0x03  0字節(jié)(開始嵌套0x00000009表示嵌套結束)
NULL    0x05 0字節(jié) 空字節(jié)無意義
CORE_NUMBER  0x00   8字節(jié)
CORE_Map  0x08      4字節(jié)(開始嵌套)
CORE_BOOLEAN  0x01     1字節(jié)

ObjValue不一定是一個固定的大小,他可以包含另外一個AMF數據,這另外一個AMF數據里面又有ObjType 加上 ObjValue,也就是AMF數據的嵌套關系
  AMF0數據的嵌套關系如下:
Object={ObjType + ObjValue}
CORE_BOOLEAN={Value(1 Byte)}
CORE_NUMBER={Value(8 Byte)}
CORE_String={StringLen(2 Byte) + StringValue(StringLen Byte)}
CORE_DATE={value(10 Byte)}
CORE_Array={ArrayLen(4 Byte) + Object}
CORE_Map={MapNum(4 Byte) + CORE_Object}
CORE_Object={CORE_String + Object}


看起來有些復雜,所以我這里圖文并茂來詳解,例如完成握手后,Flash向FMS發(fā)送的第一個RTMP數據,內容如下:


藍色的表示包頭,紅色的表示ObjType,綠色的表示數據。上面一段數據由2個RTMP包組成,2個RTMP包頭分別用藍色表示,第一個藍色的是12字節(jié)的包頭,后面一個藍色的C3是一個字節(jié)的包頭,綠色部分是數據,紅色的是AMF數據類型,整個RTMP解碼過程如下
[2008-06-18 16:59:20] DecodeInvoke:
[2008-06-18 16:59:20] InvokeName:String:connect
[2008-06-18 16:59:20] InvokeID:Double:0
[2008-06-18 16:59:20] Map:MapNum:0
[2008-06-18 16:59:20] Params:{
[2008-06-18 16:59:20] Key:String:objectEncoding
[2008-06-18 16:59:20] Value:Double:0
[2008-06-18 16:59:20] Key:String:app
[2008-06-18 16:59:20] Value:String:mediaserver
[2008-06-18 16:59:20] Key:String:fpda
[2008-06-18 16:59:20] Value:Bool:0
[2008-06-18 16:59:20] Key:String:tcUrl
[2008-06-18 16:59:20] Value:String:rtmp://127.0.0.1/mediaserver
[2008-06-18 16:59:20] Key:String:audioCodecs
[2008-06-18 16:59:20] Value:Double:615
[2008-06-18 16:59:20] Key:String:videoCodecs
[2008-06-18 16:59:20] Value:Double:76
[2008-06-18 16:59:20] }End Params
[2008-06-18 16:59:20] InvokeParams:String:PUBLISHER
[2008-06-18 16:59:20] InvokeParams:String:streamRecode

FMS3中為了實現H.264數據的直播而增加了一個數據類型,這個類型的值為0x16,這個類型不在下表中,如果需要請參看http://www./fly2700/archive/2009/02/06/297957.html

詳細的ObjType數據類型如下:,參考Red5
enum AMF
{
    /**
     * Boolean value marker constant
     */
    TYPE_BOOLEAN = 0x01,

    /**
     * String marker constant
     */
 TYPE_STRING = 0x02,

    /**
     * Object marker constant
     */
    TYPE_OBJECT = 0x03,

    /**
     * Movieclip marker constant
     */
    TYPE_MOVIECLIP = 0x04 ,

    /**
     * Null marker constant
     */
 TYPE_NULL = 0x05,

    /**
     * Undefined marker constant
     */
 TYPE_UNDEFINED = 0x06,

    /**
     * Object reference marker constant
     */
 TYPE_REFERENCE = 0x07,

    /**
     * Mixed array marker constant
     */
 TYPE_MIXED_ARRAY = 0x08,

    /**
     * End of object marker constant
     */
 TYPE_END_OF_OBJECT = 0x09,

    /**
     * Array marker constant
     */
 TYPE_ARRAY = 0x0A,

    /**
     * Date marker constant
     */
 TYPE_DATE = 0x0B,

    /**
     * Long string marker constant
     */
 TYPE_LONG_STRING = 0x0C,

    /**
     * Unsupported type marker constant
     */
 TYPE_UNSUPPORTED = 0x0D,

    /**
     * Recordset marker constant
     */
 TYPE_RECORDSET = 0x0E,

    /**
     * XML marker constant
     */
 TYPE_XML = 0x0F,

    /**
     * Class marker constant
     */
 TYPE_CLASS_OBJECT = 0x10,

    /**
     * Object marker constant (for AMF3)
     */
 TYPE_AMF3_OBJECT = 0x11,

    /**
     * true marker constant
     */
 VALUE_TRUE = 0x01,
    /**
     * false marker constant
     */
 VALUE_FALSE = 0x00
};
RTMP協議分析 一、RTMP包頭 :http://www./fly2700/archive/2008/04/09/281431.html

程序下載

http://www./fly2700/archive/2008/04/02/280641.html

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多