我正在播放预先录制的H264视频,该视频具有以下结构:
[I] [x] [x] [x] [I] [x] [x] [x] [I]...
在IDR(我结构中的I-s)之间我有32个(这里只有3个)其他帧(所有其他东西不是IDR,如SEI,SPS,PPS ...... X-es)
现在,假设我的帧的时间是这样的:
TIME: 1 2 3 4 5 6 7 8 9
FRAME: [I] [x] [x] [x] [I] [x] [x] [x] [I]...
现在我想寻找时间4.如果我寻找那个帧并发送它,图片就会搞砸,因为解码器需要一个IDR来正确解码它,所以我求助于找到合适的IDR(在这种情况下有一个时间1)并将其作为帧发送时间为4.所以现在图片被正确解码,一切都很好......但......如果我的GOV是32,我需要发送非具有索引31的IDR帧,如果它与相应的IDR之间的时间跨度是3秒,我实际上比我想要的时间提前3秒。现在,这不准确,因为我无法寻求GOV时间跨度的一半。另外,我不能设置较小的GOV,所以我想要其他想法......
我的另一个想法是发送最后一个已知的IDR,然后发送所有其他非IDR帧,这些帧在我想要的之前,只有我为它们设置RTP-TIME与相应的IDR相同。在这种情况下,图像被完美地解码,但是现在在上面的情况下,非IDR帧跟随所需时间的3秒在解码器/播放器中快速调整(没有瞬时搜索)......
有什么想法吗?或者我只能寻找IDR-s而不是中间的帧?