• <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傳輸過(guò)程中, Chunk頭部會(huì)根據(jù)實(shí)際情況使用簡(jiǎn)化的頭部(12字節(jié)的頭部是完整的頭部,8/4/1字節(jié)的頭部是根據(jù)實(shí)際情況簡(jiǎn)化的).

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

                  說(shuō)明:以上的"------"為6bit的ChunkId

            1 . 00------頭部

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

            2 . 01------頭部

            當(dāng)發(fā)送多個(gè)相關(guān)的Message時(shí),Chunk的頭部通常使用(01------)開(kāi)始, 后面追加StreamId,Message類型和Message長(zhǎng)度三個(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------)開(kāi)始, 再追加一個(gè)3字節(jié)的時(shí)間戳字段即可.

            4 . 11------頭部

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

             

            . 關(guān)于ChunkId和StreamId


            1 . StreamId的使命

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

            2 . ChunkId的使命

            一個(gè)ChunkId通常會(huì)完成某個(gè)特定的工作. 比如說(shuō)系統(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ì)通過(guò)ChunkId8這個(gè)通道告知客戶端播放的狀態(tài),如告知客戶端播放開(kā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中完成.也就是說(shuō)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   博問(wèn)   Chat2DB   管理


            導(dǎo)航

            隨筆分類

            隨筆檔案

            最新評(píng)論

            99久久精品免费看国产一区二区三区 | 久久成人国产精品二三区| 久久人人爽人人精品视频| 久久国产精品一区二区| 久久综合香蕉国产蜜臀AV| 久久精品国产亚洲αv忘忧草| 亚洲国产婷婷香蕉久久久久久| 久久精品国产第一区二区| 久久久久国产精品三级网| 亚洲国产成人精品无码久久久久久综合 | 久久婷婷激情综合色综合俺也去| 精品久久人人爽天天玩人人妻| 2021最新久久久视精品爱| 久久无码专区国产精品发布| 亚洲va久久久噜噜噜久久狠狠| 久久精品aⅴ无码中文字字幕不卡| 99久久国产宗和精品1上映| 亚洲va中文字幕无码久久不卡 | 四虎国产精品免费久久久| 国产成人久久777777| 久久综合久久伊人| 中文字幕乱码人妻无码久久| 久久久久久国产精品无码超碰| 久久精品国产亚洲网站| 人妻丰满?V无码久久不卡| 久久精品国产亚洲AV香蕉| 日本免费一区二区久久人人澡| 亚洲国产日韩欧美久久| 久久久久亚洲AV无码麻豆| 久久久久国产日韩精品网站| 久久99国产精品久久99小说| 国产精品久久波多野结衣| 色婷婷狠狠久久综合五月| 2021少妇久久久久久久久久| 午夜精品久久久久成人| 丁香狠狠色婷婷久久综合| 狠狠色丁香婷婷久久综合| 久久亚洲高清观看| 无码人妻久久一区二区三区| 色99久久久久高潮综合影院| 免费国产99久久久香蕉|