• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            RTMP 協議學習總結

            轉載自:http://blog.chinaunix.net/uid-17102734-id-3986995.html

            RTMP協議是一個互聯網TCP/IP五層體系結構中應用層的協議。RTMP協議中基本的數據單元稱為消息(Message)。當RTMP協議在互聯網中傳輸數據的時候,消息會被拆分成更小的單元,稱為消息塊(Chunk)。

            1 消息

            消息是RTMP協議中基本的數據單元。不同種類的消息包含不同的Message Type ID,代表不同的功能。RTMP協議中一共規定了十多種消息類型,分別發揮著不同的作用。例如,Message Type ID在1-7的消息用于協議控制,這些消息一般是RTMP協議自身管理要使用的消息,用戶一般情況下無需操作其中的數據。Message Type ID為8,9的消息分別用于傳輸音頻和視頻數據。Message Type ID為15-20的消息用于發送AMF編碼的命令,負責用戶與服務器之間的交互,比如播放,暫停等等。消息首部(Message Header)有四部分組成:標志消息類型的Message Type ID,標志消息長度的Payload Length,標識時間戳的Timestamp,標識消息所屬媒體流的Stream ID。消息的報文結構如下圖所示。

            2 消息塊
            在網絡上傳輸數據時,消息需要被拆分成較小的數據塊,才適合在相應的網絡環境上傳輸。RTMP協議中規定,消息在網絡上傳輸時被拆分成消息塊(Chunk)。消息塊首部(Chunk Header)有三部分組成:用于標識本塊的Chunk Basic Header,用于標識本塊負載所屬消息的Chunk Message Header,以及當時間戳溢出時才出現的Extended Timestamp。消息塊的報文結構如下圖所示。



            3 消息分塊

            在消息被分割成幾個消息塊的過程中,消息負載部分(Message Body)被分割成大小固定的數據塊(默認是128字節,最后一個數據塊可以小于該固定長度),并在其首部加上消息塊首部(Chunk Header),就組成了相應的消息塊。消息分塊過程如下圖所示,一個大小為307字節的消息被分割成128字節的消息塊(除了最后一個)。

            RTMP傳輸媒體數據的過程中,發送端首先把媒體數據封裝成消息,然后把消息分割成消息塊,最后將分割后的消息塊通過TCP協議發送出去。接收端在通過TCP協議收到數據后,首先把消息塊重新組合成消息,然后通過對消息進行解封裝處理就可以恢復出媒體數據。

            2.1 Chunk Basic Header [1-3字節]
            HeaderType+ChannelID組成,其中ChannelID的大小決定了整個Chunk Basic Header的大小
            2.1.1  

            ID

            和消息塊的類型,消息塊類型決定了消息包頭的編碼格式,長度完全

            HeaderType(fmt):決定了Chunk Message Header的編碼方式和大小,在第一個字節的高兩位
            Bits Chunk Message Header Length
            00   12 bytes
            01   8 bytes
            10   4 bytes
            11   1 byte
            2.1.2 ChannelID:
            ChannelID 用途
            02              Ping 和ByteRead通道
            03              Invoke通道 我們的connect() publish()和自字寫的NetConnection.Call() 數據都是在這個通道的
            04              Audio和Vidio通道
            05 06 07     服務器保留,經觀察FMS2用這些Channel也用來發送音頻或視頻數據
            2.2 Chunk Message Header
            以最大fmt =00 length(Chunk Message Header) == 12 為例
            Chunk Message Header的結構是:timestamp,message_length,message_type,msg_stream_id
            其中message_type是一個枚舉變量:
            type為1,2,3,5,6的時候是協議控制消息
            type為4的時候表示 User Control Messages [Event_type + Event_Data] Event_type有Stream Begin
            Stream End...
            type為8,音頻數據
            type為9,視頻數據
            type為18 元數據消息[AMF0]
            type為20 命令消息 Command Message(RPC Message)
            These messages are sent to perform some operations like connect, createStream, publish, play, pause on the peer.
            命令消息主要分成兩種NetConnection和NetStream。
            connect,call,close,createStream命令可以在NetConnection中發送。
            coonect(name,TranscationID,Command Object<name-value> pair)
            play,publish,seek,pause等命令可以在NetStream中發送。
            2.3 Ext Time Stamp
            2.4數據
            RTMP流媒體播放過程
            RTMP協議規定,播放一個流媒體有兩個前提步驟:第一步,建立一個網絡連接(NetConnection);第二步,建立一個網絡流(NetStream)。其中,網絡連接代表服務器端應用程序和客戶端之間基礎的連通關系。網絡流代表了發送多媒體數據的通道。服務器和客戶端之間只能建立一個網絡連接,但是基于該連接可以創建很多網絡流。

            播放一個RTMP協議的流媒體需要經過以下幾個步驟:握手,建立連接,建立流,播放。RTMP連接都是以握手作為開始的。建立連接階段用于建立客戶端與服務器之間的“網絡連接”;建立流階段用于建立客戶端與服務器之間的“網絡流”;播放階段用于傳輸視音頻數據。
            參考:http://blog.csdn.net/leixiaohua1020/article/category/1362941
            RTMP協議中文版
            http://wenku.baidu.com/link?url=Lc4gR-FLeCkHCMM1NL-FcAUtKFTRaFn0tcdoqcid6Dtvu_Q2wlSQ-GMY711Ptc_TdeG2KU0E9e-aHddFVZJSMwt2CujY2p7AdHg8Vr15HuG
            RTMP協議英文版
            http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf
            開源項目 RTMP Dump
            http://rtmpdump.mplayerhq.hu/

            posted on 2014-05-31 20:13 楊粼波 閱讀(1617) 評論(0)  編輯 收藏 引用

            国产精品欧美久久久久天天影视| 欧美伊人久久大香线蕉综合 | 精品久久久久久无码专区| 亚洲欧洲久久av| 色综合久久88色综合天天 | 久久一区二区三区免费| 久久天天躁狠狠躁夜夜2020老熟妇| 国产成人精品久久亚洲| 久久99精品久久久久久水蜜桃| 久久综合中文字幕| 国产精品久久久久久久午夜片| 久久精品国产欧美日韩| 无码人妻少妇久久中文字幕| 久久久久久久久久久久久久| 日韩精品无码久久久久久| 久久久噜噜噜久久熟女AA片| 国产精品视频久久久| 丰满少妇人妻久久久久久4| 久久久久黑人强伦姧人妻| 91麻豆国产精品91久久久| 久久久久亚洲av无码专区导航| 国产精品久久久久影院色| 久久伊人五月天论坛| 国产成人精品综合久久久| 成人久久精品一区二区三区| AAA级久久久精品无码区| 无码人妻久久一区二区三区蜜桃 | 久久免费精品视频| 亚洲欧美国产精品专区久久| 精品国产一区二区三区久久久狼 | 国产L精品国产亚洲区久久| 一本色道久久综合| 精品九九久久国内精品| 久久综合亚洲鲁鲁五月天| 97精品伊人久久久大香线蕉 | 日韩精品无码久久一区二区三| 久久久女人与动物群交毛片 | 囯产极品美女高潮无套久久久 | 久久AⅤ人妻少妇嫩草影院| 欧美黑人又粗又大久久久| 久久伊人五月天论坛|