gpt4 book ai didi

ffmpeg 如何从 [['I' 帧] 计算完整帧 'P' 帧]。它在概念上是正确的吗?

转载 作者:行者123 更新时间:2023-12-04 22:48:42 25 4
gpt4 key购买 nike

我正在尝试了解 ffmpeg 流视频处理的知识。

我的理解是:

我从 IPed Camaera 得到像“IPPPPPPPPPPPPPPPPIPPPPPPP”这样的帧。

帧“I”是一个完整的帧,其中帧“P”取决于前一个“P”或“I”帧,后者是关闭的。

我使用 avcodec_decode_video2 获取帧

while (av_read_frame (context, &packet) >=0)
{
//LOGD (" Received PACKET...DTS and PTS %ld and %ld ", packet.pts, packet.dts);

if(packet.stream_index == videoStreamIndex ) {
avcodec_decode_video2 (pCodecCtx, pFrame, &finished, &packet);
if ( finished) {
// Here is my frame, getting the type by av_get_picture_type_char(pFrame->pict_type).
}
}

现在,当我只显示我收到的帧时,看起来就像每当收到“I”帧时,它会正确显示,当收到“P”帧时,图像会被折腾。

1)我们需要手动做任何计算来将“P”帧转换为“I”帧以便渲染?

2)如果不是(1),我需要注意什么?..DTS/PTS 计算在这里有什么魔力吗?

最佳答案

P 帧不依赖于前一个 P 帧,它依赖于前一个图像。因此,例如,如果您有 IPP,则需要 I 和第二个 P 才能使用第三个 P,而不仅仅是第二个 P。
decode_video2为您进行插值并返回图像,所以它折腾的原因一定是不同的。

PTS/DTS 告诉您何时显示帧,但帧仍然必须有效。

关于ffmpeg 如何从 [['I' 帧] 计算完整帧 'P' 帧]。它在概念上是正确的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21774817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com