可以从RTP流中提取profile-level-id和sprop-parameter-sets?

060*_*002 4 rtp rtsp video-streaming h.264

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

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

所以我的问题是:

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

编辑:

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

jgh*_*jgh 7

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

67 42 00 1E

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

sprop-parameter-sets是Base64编码的序列参数集和图片参数集,以逗号分隔.因此,Base64对SPS和PPS NAL单元(Nal类型7和NAL类型8)进行编码,并用逗号分隔,你应该很好.