解码时分辨率改变了吗?

问题描述 投票:0回答:1

我正在使用带有C ++的FFMPEG来读取帧并从IP摄像机的RTSP流中对其进行解码。

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

结果是av_read_frame()在while循环中仍成功读取成功的下一帧(具有新分辨率),而没有错误。因此,我无法检测到该更改以重新初始化缓冲区或重新连接流以更新其他流的信息。

av_read_frame()将读取AVPacket,如果我可以读取AVPacket中的分辨率信息,则可以检测到该更改并重新初始化缓冲区。但是我在AVPacket结构中看不到任何分辨率信息。

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

非常感谢!

c++ ffmpeg
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.