首页 > 解决方案 > RTMP 可以在单个块流中多路复用消息吗?

问题描述

阅读RTMP 规范,为了编写一个基本的 RTMP 服务器,我不知道是否可以通过同一个块流(块流 id)发送多条消息(消息流 id)。

第 5.3.2 节分享了两个示例:一个是具有相同流 id的多条消息通过多个块顺序发送,用于单个块流 id,另一个是单个消息通过多个块发送,用于单个块流 id。

但是没有示例演示具有不同流 id的多条消息在单个块流 id 的多个块上同时发送。我找不到任何可以阻止这种情况的东西,但我想确认一下。

例如,假设您有两条消息,如示例 2

 +-----------+-------------------+-----------------+-----------------+
 |           | Message Stream ID | Message TYpe ID |  Time  | Length |
 +-----------+-------------------+-----------------+-----------------+
 | Msg # 1   |         27        |    9 (video)    | 1000   |  307   |
 +-----------+-------------------+-----------------+-----------------+
 | Msg # 2   |         42        |    9 (video)    | 1000   |  197   |
 +-----------+-------------------+-----------------+-----------------+

RTMP 客户端可以发送以下的块序列吗?

  1. 为 27 键入 0 消息
  2. 为 42 键入 0 消息
  3. 27 的类型 3 消息
  4. 27 的类型 3 消息(完全发送 Msg #1)
  5. 42 的类型 3 消息(完全发送消息 #2)

换句话说,块 3 是否应该使用来自 1 或来自 2 的标头(即基于消息流 id)?

标签: rtmplive-streaming

解决方案


推荐阅读