我一直在寻找这个,但似乎找不到它。我有一个使用 ffmpeg 提取的 RTSP 流。我可以使用的对象包括 AVPacket、AVFrame、AVCodecContext 和 AVFormatContext 。我想获得拍摄一帧的绝对时间。 (理想情况下粒度小至毫秒,但这并不是完全必要的)。
有没有一种简单的方法可以使用 ffmpeg 库来做到这一点?我查看了 av_frame_get_best_effort_timestamp
以及 codec_context->time_base
,但这似乎在视频开始后几秒钟内给出了答案,而且我不一定知道视频何时开始。
最佳答案
使用 int64_t AVFormatContext::start_time_realtime
,然后添加自流开始以来的帧时间。
[编辑]
还要考虑到start_time_realtime
以毫秒表示,而AVFrame::best_effort_timestamp
表示为AVStream->time_base units
关于c++ - FFmpeg c++ 如何获取时间戳(自拍摄帧的纪元以来的秒数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45942670/