c++ - FFmpeg c++ 如何获取时间戳(自拍摄帧的纪元以来的秒数)

标签 c++ ffmpeg unix-timestamp

我一直在寻找这个,但似乎找不到它。我有一个使用 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/

相关文章:

c++ - C++中的双指针和const

C++ 多个枚举元素作为参数传递?

Ffmpeg hls 直播 - 如何生成较短的片段

javascript - 带有 PHP echo 的 Unix 时间戳 Chart.js

c++ - 克服rpc字节顺序转换

c++ - 创建正在运行的进程的 MiniDump

unix - unix下如何根据时间戳对文件进行排序?

javascript - 在javascript中获取时差

ffmpeg - FFMPEG 使用隐藏式字幕数据捕获视频

c++ - 使用 ffmpeg.dll 或 avcodec.dll 将视频文件转换为 TIFF? "on-the-fly"可能吗?