为 iOS VideoToolbox 的不完整 H264 流合成 SPS 和 PPS

Synthesize SPS and PPS for incomplete H264 stream for iOS VideoToolbox

我有一台 AXIS IP 摄像机 (M1054),它通过 RTSP 发送 H264/RTP 流。

不幸的是,他们根本不发送 SPS 和 PPS NALU,他们只传输(碎片化的)Codec 切片。

我正在尝试使用 iOS VideoToolbox 框架解码该流,该框架需要 H264 SPS 和 PPS 元组才能正确设置 CMFormatDescription.

我想知道如何通过查看实际的 H264 切片来合成必要的参数集?

更新:我捕获了一个示例会话,其中 mplayer 设法通过 Wireshark 显示流。捕获文件 is here,您可以看到整个 RTSP 设置以及几秒钟的 RTP。

RTP 由 3 组流组成。

  1. 媒体 RTP
  2. 用于控制连接的RTSP
  3. 用于发送方确认和时间戳的 RTCP。

虽然 SPS/PPS 通常在流内的带内并通过 RTP 传输 - 它不需要在那里(并且可能不应该在那里)。 SPS/PPS 作为设置过程 (RTSP) 的一部分进行传输。我通常推荐 运行 http://www.live555.com/ in the debugger to learn about the details of the process - but http://www.live555.com/ 目前已下架。

在极少数情况下,您可以从众所周知的受限 H.264 流中重新创建 SPS/PPS。但一般情况下你不能。所以 SPS/PPS 是 H.264 流的元数据,没有冗余存储在其他任何地方。

因此,如果您熟悉设置过程 - RTSP - 将会非常明显。