gpt4 book ai didi

c++ - 处理解码时改变的分辨率?

转载 作者:行者123 更新时间:2023-12-02 10:05:17 25 4
gpt4 key购买 nike

我正在使用带有 C++ 的 FFMPEG 来读取帧并从 IP 摄像机上的 RTSP 流解码它们。

一切正常,但在解码时,我尝试更改 IP 摄像机上的流分辨率配置(例如:从 1280x720 更改为 1920x1080)。

结果是av_read_frame()在 while 循环中仍然读取成功的下一帧(使用新分辨率)而没有错误。所以我无法检测到重新初始化缓冲区或重新连接流以更新其他流信息的更改。
av_read_frame()将读取一个 AVPacket,如果我可以读取 AVPacket 中的分辨率信息,那么我可以检测到该更改并重新初始化缓冲区。但我在 AVPacket 结构中看不到任何分辨率信息。

有人可以帮助我,如何在读取和解码流时检测分辨率变化?

更新

我正在使用许多编解码器,如 H264 和 H265/H265+。这种情况发生在上述所有 3 个编解码器中。

在许多情况下,我还会存储 AVPacket 以供以后播放,因此无需解码。我需要立即检测分辨率变化,以便能够正确构建标题信息以存储在 HDD 上。

非常感谢!

最佳答案

av_read_frame() 无法检测到带内分辨率变化因为av_read_frame()不解析帧,它只从流中读取数据并将其放入缓冲区。您将需要使用比特流解析器,或将帧发送到解码器(如果解码器支持分辨率更改)。但是,每个编解码器都不同,因此除非我知道您使用的是什么编解码器,否则我无法为您提供更多信息。

关于c++ - 处理解码时改变的分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60486983/

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