4

我正在尝试将实时视频从我的 android 手机流式传输到我 PC 上的桌面 RTSP 服务器。流式视频可以在另一台设备上播放。我正在使用 H.264 视频编码器,因此服务器返回的 SDP(作为DESCRIBE请求的回复)应该包含profile-level-idandsprop-parameter-sets字段。

Spydroid项目展示了如何通过解析(从块中)从记录到 SD 卡的虚拟文件中提取这些信息avcC但我不能那样做。在 Spydroid 中,媒体记录器和 RTSP 服务器位于同一设备上,因此服务器始终可以在流式传输之前记录具有与记录器相同配置的测试文件。但我将视频作为 RTP 流直接从手机流式传输到远程服务器。

所以我的问题是:

  1. 如何将这些值提供给维护协议的服务器?
  2. 有没有办法从 RTP 流中找出这两个字段?

编辑:

我正在使用 android 手机生成流,但服务器可以从任何来源接收 RTP 流。那么,是否有任何通用的方法来获取这些值?

4

1 回答 1

7

您可以profile-level-id从序列参数集 NAL 单元中提取 (如果事实上,参数集甚至在流中发送),它是 NAL 标头之后的前 3 个字节。即来自 3.0 级基线配置文件流的 SPS NAL 单元的前四个字节如下所示:

67 42 00 1E

忽略第一个字节,这只是表明它是一个 SPS NAL 单元(0x67 & 0x1F == 0x7SPS 是 NAL Type 7,PPS 是 NAL Type 8)。其他 3 个字节为您提供配置文件、约束标志和级别(实际上,它只是第 3 个字节中的级别乘以 10)。

sprop-parameter-sets是Base64编码的Sequence Parameter Sets和Picture Parameter Sets,用逗号隔开。所以只需 Base64 编码 SPS 和 PPS NAL 单元(Nal 类型 7 和 NAL 类型 8)并用逗号分隔,你应该很高兴。

于 2012-09-09T18:51:03.910 回答