RTP \ H.264的时间戳

时间:2014-04-29 13:57:39

标签: video video-streaming h.264 rtp

我对I,P,B帧及其时间戳有疑问。

我知道RTP数据包的时间戳假设单调增加。 我也知道(纠正我,如果我错了)h.264 B_5帧可以在P_4帧之前传输但在(P_4然后是B_5)之后显示,所以解码器将使用B帧解码P帧。

我有一个RTP \ H.264流的pcap捕获,我可以看到时间戳增加\减少......而不是单调增加。

所以我的问题是什么值的RTP数据包(I,P,B帧)应该在h264传输上得到什么?

我很乐意对此事做一些澄清。

感谢。

3 个答案:

答案 0 :(得分:5)

  

我知道RTP数据包的时间戳假设要单调增加。

根据RFC3550

  

可以包含连续的RTP数据包         如果数据未传输,则时间戳不是单调的         按照它被采样的顺序,如MPEG插值的情况         视频帧。 (传输的数据包的序列号         仍将是单调的。)

此外,您的陈述不正确

  

我也知道(纠正我,如果我错了)在h.264 B_5帧可以在P_4帧之前发送但在(P_4然后B_5)之后显示(因此解码器将使用B帧来解码P帧)。

首先,B帧依赖于I帧或P帧,即B帧不用于解码P帧,反之亦然 - > B5取决于P4。在P4之前没有理由发送B5。请注意,这取决于您的GOP结构。

如果媒体样本按解码顺序传输(这取决于RFC6184中定义的分组化模式)并且GOP类似于I-B1-B2-B3-P,则这些帧将被传输IP-B2-B1-B3

如果使用交错分组模式,则必须使用解码顺序号(DON)来恢复解码顺序。您可以在RFC6184中了解相关信息。

答案 1 :(得分:0)

这是一个非常有趣的问题,因为它没有答案。

我建议您可以使用PTS发送RTP,而不是使用DTS发送。所以你的RTP序列是正确的,但时间戳不会是单调的。

然后你可以分析它并恢复DTS / PTS。

答案 2 :(得分:0)

所以如果tmestamps不是单调的。这可能是A / V同步的问题。

是否存在将单调PTS置于具有非单调RTP时间戳的RTP接收帧上的概念?