• <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>

            RTMP協(xié)議 - Chunk

            KEY : Message / Chunk / Stream

            Rtmp中,一個(gè)Message通常是分割成多個(gè)Chunk進(jìn)行傳輸?shù)?每個(gè)Chunk通常包含有1~12個(gè)字節(jié)的頭部(該部分與完整的協(xié)議不是十分符合).

            因?yàn)?/span>Rtmp是基于TCP協(xié)議的,所以在Rtmp傳輸過程中, Chunk頭部會(huì)根據(jù)實(shí)際情況使用簡化的頭部(12字節(jié)的頭部是完整的頭部,8/4/1字節(jié)的頭部是根據(jù)實(shí)際情況簡化的).

            . Chunk頭部的簡化規(guī)則

                  說明:以上的"------"為6bit的ChunkId

            1 . 00------頭部

            在傳輸開始,的第一個(gè)Chunk頭部通常使用(00------)格式,包含完整的頭部信息,依次包含:時(shí)間戳,Message長度,Message類型1B,StreamId1B. 這些信息在程序中是需要保留的.以便后面簡化的頭部,可根據(jù)該頭部完善信息.

            2 . 01------頭部

            當(dāng)發(fā)送多個(gè)相關(guān)的Message時(shí),Chunk的頭部通常使用(01------)開始, 后面追加StreamId,Message類型和Message長度三個(gè)字段,這些字段與前一個(gè)Chunk的信息保持一致.例如,當(dāng)交錯(cuò)的發(fā)送Video/Audio Message,它們屬于同一個(gè)StreamId,但其他字段都發(fā)生了變化.

            3 . 10------頭部

            當(dāng)由一個(gè)Message拆分成的連續(xù)的兩個(gè)Chunk的時(shí)間戳發(fā)生了變化時(shí)(尤其是Video/Audio Message),例如,一個(gè)Video Message中前一個(gè)Chunk和下一個(gè)Chunk的時(shí)間戳或時(shí)間戳增量不一致,后面的Chunk頭部會(huì)以(10------)開始, 再追加一個(gè)3字節(jié)的時(shí)間戳字段即可.

            4 . 11------頭部

            當(dāng)一個(gè)Message過長,需要由多個(gè)連續(xù)的Chunk進(jìn)行發(fā)送時(shí),Chunk的頭部通常會(huì)以(11------)開始, 沒有其他附加字段,所有相關(guān)字段與前一個(gè)Chunk保持一致.

             

            . 關(guān)于ChunkId和StreamId


            1 . StreamId的使命

            一個(gè)StreamId通常用以完成某些特定的工作. 如使用Id為0的Stream來完成客戶端和服務(wù)器的連接和控制,用Id為1的Stream來完成Stream的控制和播放等工作.

            2 . ChunkId的使命

            一個(gè)ChunkId通常會(huì)完成某個(gè)特定的工作. 比如說系統(tǒng)保留的ChunkId為2的就只是用于完成對(duì)Stream的控制. 在該通道上,服務(wù)器和客戶端可以對(duì)Stream的具體屬性進(jìn)行設(shè)置和交互.如創(chuàng)建一個(gè)Stream,告知Stream結(jié)束,設(shè)定Stream的帶寬,設(shè)定Chunk大小,終止Message等.這里對(duì)Stream的控制不是針對(duì)某個(gè)Stream的,而是全局的.

            再比如,使用ChunkId8對(duì)播放進(jìn)行控制.客戶端發(fā)送"play"命令,服務(wù)器也會(huì)通過ChunkId8這個(gè)通道告知客戶端播放的狀態(tài),如告知客戶端播放開始,播放完成等信息.服務(wù)器使用ChunkId5進(jìn)行媒體數(shù)據(jù)的傳送,如果客戶端需要針對(duì)這些數(shù)據(jù)對(duì)服務(wù)器應(yīng)答,也要使用該通道.

            3 . ChunkId和StreamId的關(guān)系

            ChunkId和StreamId的關(guān)系目前并不明了,但通常情況下某一個(gè)ChunkId會(huì)在固定的StreamId中完成相應(yīng)的工作. 比如ChunkId2對(duì)Stream的相關(guān)屬性進(jìn)行控制,這些控制的消息必須在StreamId0中完成.也就是說ChunkId2和StreamId0指定了服務(wù)器和客戶端對(duì)Stream控制的以個(gè)對(duì)話通道.

            posted on 2012-10-31 17:09 Apollo Fang 閱讀(760) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Protocol


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            隨筆分類

            隨筆檔案

            最新評(píng)論

            久久综合伊人77777| 国产亚洲精久久久久久无码| 91久久九九无码成人网站 | 怡红院日本一道日本久久| 国产精品久久午夜夜伦鲁鲁| 国产亚洲婷婷香蕉久久精品| 国产精品热久久毛片| 国产毛片欧美毛片久久久| 大伊人青草狠狠久久| 久久精品成人影院| 国产色综合久久无码有码| 国内精品久久久久久久久电影网| 久久99九九国产免费看小说| 狠狠干狠狠久久| 久久妇女高潮几次MBA| 国内精品久久久久久久涩爱| 久久水蜜桃亚洲av无码精品麻豆| 99久久精品免费看国产免费| 久久一日本道色综合久久| 久久99精品国产麻豆蜜芽| 久久精品无码午夜福利理论片| 亚洲中文字幕伊人久久无码| 99久久精品国产一区二区三区| 无码超乳爆乳中文字幕久久| 伊人久久五月天| 国产精品久久久久久五月尺| 国产午夜电影久久| 超级碰久久免费公开视频| 精品无码久久久久久午夜| 精品国产乱码久久久久久呢| 欧美久久综合九色综合| 狠狠人妻久久久久久综合蜜桃| www.久久热.com| 久久精品国产免费| 91精品国产91久久久久久蜜臀 | 久久99精品久久久大学生| 欧洲国产伦久久久久久久| 国内精品久久久久影院网站| 久久久久久极精品久久久| 久久99国产一区二区三区| 午夜视频久久久久一区|