“RTMP study notes”的版本间的差异
来自个人维基
free6d1823(讨论 | 贡献) |
free6d1823(讨论 | 贡献) |
||
第33行: | 第33行: | ||
| Basic Header | Message Header | Extended Timestamp | Chunk Data | | | Basic Header | Message Header | Extended Timestamp | Chunk Data | | ||
+--------------+----------------+--------------------+--------------+ | +--------------+----------------+--------------------+--------------+ | ||
− | + | Basic Header: 1~3 bytes, Chunk Stream ID + chunk type | |
− | + | Message Header:0,3,7, or 11 bytes,message的type | |
+ | Extended Timestamp: 0 or 4 bytes | ||
+ | Chunk header = Basic Header + Message Header + Extended Timestamp | ||
+ | Chunk data: variable size. | ||
+ | Chunk Stream ID: 3~65599, | ||
+ | 0n = 64+n (64~319) | ||
+ | 1mn = 64+m + n*256 (64~65599) | ||
+ | n (n !=0,1,2 one byte) (3~63) | ||
+ | 2 is reserved for level control | ||
+ | chunk type 高2位:format of Message header | ||
+ | Type 0: 11 byte 用于stream 开头 | ||
+ | timestamp[3]: 发送时间, 0xffffff 使用Extended Timestamp [32bits] | ||
+ | message length[3] | ||
+ | message type id[1] | ||
+ | message stream id[4] | ||
+ | Type 1: 7 bytes | ||
+ | timestamp delta[3] | ||
+ | message length[3] | ||
+ | message type id[1] | ||
+ | Type 2: 3 bytes ID 与长度跟前个chunk 同 | ||
+ | timestamp delta[3] | ||
+ | Type 3: no message header. timestamp , ID 与长度跟前个chunk 同 |
2020年4月5日 (日) 17:46的版本
Ref: https://www.adobe.com/devnet/rtmp.html
Handshaking Sequence
uninitialized ----
C0 -->
C1 -->
<-- S0 必须在 C0或C1 之后
<-- S1 必须在 C0或C1 之后
version sent -----
C2 -->
C2 必须在 S1之后
Ack sent -----
<-- s2 必须在C1之后
Handshake Done ----
data -->
data必须在S2之后
<-- data 必须在c2 之后
C0-> RTMP version 8 bits (=3)
<- S0 RTMP version 8 bit (=3)
C1,S1 1536 bytes
time[4]: stream 的参考基准时间 zero[4]:0 random bytes[1528] 乱数token
C2,S2 1536 bytes
time[4]: C2: S1 的时间; S2: C1 的时间 time2[4]: 读取S1/C1的时间 random bytes[1528]: C1/S1的乱数token
Chunk:
| Basic Header | Message Header | Extended Timestamp | Chunk Data |
+--------------+----------------+--------------------+--------------+
Basic Header: 1~3 bytes, Chunk Stream ID + chunk type
Message Header:0,3,7, or 11 bytes,message的type
Extended Timestamp: 0 or 4 bytes
Chunk header = Basic Header + Message Header + Extended Timestamp
Chunk data: variable size.
Chunk Stream ID: 3~65599,
0n = 64+n (64~319) 1mn = 64+m + n*256 (64~65599) n (n !=0,1,2 one byte) (3~63) 2 is reserved for level control
chunk type 高2位:format of Message header
Type 0: 11 byte 用于stream 开头 timestamp[3]: 发送时间, 0xffffff 使用Extended Timestamp [32bits] message length[3] message type id[1] message stream id[4] Type 1: 7 bytes timestamp delta[3] message length[3] message type id[1] Type 2: 3 bytes ID 与长度跟前个chunk 同 timestamp delta[3] Type 3: no message header. timestamp , ID 与长度跟前个chunk 同