FFmpeg C ++如何获取时间戳,以秒为单位,从拍摄帧的纪元开始

FFmpeg c++ how to get the timestamp, in seconds since epoch that a frame was taken at

我一直在寻找这个,但似乎找不到。我有一个使用 ffmpeg 提取的 RTSP 流。我可以使用的对象包括 AVPacket、AVFrame、AVCodecContext 和 AVFormatContext。我想获得拍摄帧的绝对时间。 (理想情况下粒度小至毫秒,尽管这不是完全必要的)。

有没有一种简单的方法可以使用 ffmpeg 库来做到这一点?我看过 av_frame_get_best_effort_timestampcodec_context->time_base,但这似乎在视频开始后的几秒钟内给出了答案,而且我不一定知道视频是什么时候开始的。

使用int64_t AVFormatContext::start_time_realtime,然后添加自流开始以来的帧时间。

[编辑]

还要考虑到start_time_realtime是以毫秒表示的,而AVFrame::best_effort_timestamp是以AVStream->time_base units

表示的