rtmp以TCP方式推流,分为一个个消息包。
一、握手
握手开始于客户端发送 C0,C1 块。 服务端在发送 S0 和 S1 之前必须等待接收 C0,也可以等待接收 C1。 服务端在发送 S2 之前必须等待接收 C1。 在发送 C2 之前客户端必须等待接收 S1 。 客户端在发送任何数据之前必须等待接收 S2。 服务端在发送任何数据之前必须等待接收 C2。 |
1、 C0 : s <= c
客户端RTMP的版本号,一个字节,一般是3
rtmp1.0规范所定义的版本是 3;0-2 是早期产品所用的,已被丢弃;4-31保留在未来使用;32-255 不允许使用(为了区分其他以某一字符开始的文本协议)。
如果服务无法识别客户端请求的版本,应该返回 3 。客户端可以选择减到版本 3 或选择取消握手
2、 C1 : s <= c
一共1536字节
4-time + 4-zero + 1528-random
- 时间:4 字节 本字段包含时间戳。该时间戳应该是发送这个数据块的端点的后续块的时间起始点。可以是 0,或其他的 任何值。为了同步多个流,端点可能发送其块流的当前值。
- 零:4 字节 本字段必须是全零。
- 随机数据:1528 字节。 本字段可以包含任何值。 因为每个端点必须用自己初始化的握手和对端初始化的握 手来区分身份,所以这个数据应有充分的随机性。但是并不需要加