rtmp協議中streamid和chunk關係

2021-06-28 21:32:31 字數 1379 閱讀 3073

rtmp中,乙個message通常是分割成多個chunk進行傳輸的.每個chunk通常包含有1~12個位元組的頭部(該部分與完整的協議不是十分符合). 因為

rtmp是基於tcp協議的,所以在rtmp傳輸過程中, chunk頭部會根據實際情況使用簡化的頭部(12位元組的頭部是完整的頭部,8/4/1位元組的頭部是根據實際情況簡化的). 一

. chunk頭部的簡化規則 說明

:以上的"------"為6bit的chunkid

1 . 00------頭部

在傳輸開始

,的第乙個chunk頭部通常使用(00------)格式,包含完整的頭部資訊,依次包含:時間戳,message長度,message型別1b,streamid1b. 這些資訊在程式中是需要保留的.以便後面簡化的頭部,可根據該頭部完善資訊.

2 . 01------頭部

當傳送多個相關的

message時,chunk的頭部通常使用(01------)開始, 後面追加streamid,message型別和message長度三個字段,這些欄位與前乙個chunk的資訊保持一致.例如,當交錯的傳送video/audio message,它們屬於同乙個streamid,但其他欄位都發生了變化.

3 . 10------頭部

當由乙個

message拆分成的連續的兩個chunk的時間戳發生了變化時(尤其是video/audio message),例如,乙個video message中前乙個chunk和下乙個chunk的時間戳或時間戳增量不一致,後面的chunk頭部會以(10------)開始, 再追加乙個3位元組的時間戳字段即可.

4 . 11------頭部

當乙個message過長,需要由多個連續的chunk進行傳送時,chunk的頭部通常會以(11------)開始, 沒有其他附加字段,所有相關欄位與前乙個chunk保持一致. 二

. 關於chunkid和streamid

1 . streamid的使命 乙個

2 . chunkid的使命 乙個

chunkid通常會完成某個特定的工作. 比如說系統保留的chunkid為2的就只是用於完成對stream的控制. 在該通道上,伺服器和客戶端可以對stream的具體屬性進行設定和互動.如建立乙個stream,告知stream結束,設定stream的頻寬,設定chunk大小,終止message等.這裡對stream的控制不是針對某個stream的,而是全域性的.

再比如3 . chunkid和streamid的關係

chunkid和streamid的關係目前並不明了,但通常情況下某乙個chunkid會在固定的streamid中完成相應的工作. 比如chunkid2對stream的相關屬性進行控制,這些控制的訊息必須在streamid0中完成.也就是說chunkid2和streamid0指定了伺服器和客戶端對stream控制的以個對話通道.

RTMP協議概述

rtmp協議概述 介紹 rtmp協議就像乙個用來裝資料報的容器,這些資料可以是amf格式的資料,也可以是flv中的視 音訊資料.乙個單一的連線可以通過不同的通道傳輸多路網路流.這些通道中的包都是按照固定大小的包傳輸的.網路連線 connection copy to clipboard code va...

RTMP協議分析

rtmp協議封包 由乙個包頭和乙個包體組成,包頭可以是4種長度的任意一種 12,8,4,1 byte s 完整的rtmp包頭應該是12bytes,包含了時間戳,amfsize,amftype,streamid資訊,8位元組的包頭只紀錄了時間戳,amfsize,amftype,其他位元組的包頭紀錄資訊...

rtmp 協議詳解

rtmp協議是乙個網際網路tcp ip五層體系結構中應用層的協議。rtmp協議中基本的資料單元稱為訊息 message 當rtmp協議在網際網路中傳輸資料的時候,訊息會被拆分成更小的單元,稱為訊息塊 chunk 1 訊息 2 訊息塊 在網路上傳輸資料時,訊息需要被拆分成較小的資料塊,才適合在相應的網...