获取视频经过的时间
Get time elapsed of a video
我有一个VideoCapture
,然后我正在执行一些操作,例如对象检测。现在我已经到达了一个阶段,我想获取视频在特定时间内的经过时间,例如当检测到物体时。获取经过时间的最佳/最可靠方法是什么?
重要的是,由于 FPS 下降,视频无法以原始速度运行,这是因为我正在执行一些图像处理。所以问题是我希望能够在处理后的视频中获取时间,然后能够跟踪原始视频中的时间,并且它应该在同一序列上。(示例:我得到的时间是 05:30,那么如果我在 VLC 等中转到 05:30,它应该在原始视频中的同一位置)。
我希望我在解释中足够清楚。我已经尝试了CV_CAP
不同的选择,但我不明白如何获得时间。它的用法是这样的:
if (this)
Get time elapsed
任何想法和所有帮助都非常感谢!
,如果您知道原始 FPS 速率和当前帧数,那么它就很简单了:elapsed_time_in_seconds = frame_number / original_fps
.
OpenCV 将视频解码为其帧,而不管视频文件的编解码器如何。负责的模块是ffmpeg,这是一个混乱,超出了研究内容的图像处理范围。我的意思是,OpenCV并不关心你是否无法获得CODEC的真实fps。因此,无法保证获得您询问的时间。正如@Jesper所说,尽量幸运地使用original_fps(这是一个恒定的数字,您可能知道视频可能具有不同的 FPS,例如,直播视频会根据可用网络带宽更改其 fps 以赶上时间)。
这听起来可能很愚蠢,但在 OpenCV 中推断时间的最可靠方法是在视频捕获期间实际硬打印帧上的时间戳。
另一种解决方案可能是为您的软件设置先决条件/要求。 例如,要求视频输入应恒定为 30 FPS。
最后,与所有其他方法一样,使用帧号作为时间指示。
- 为什么根据测量位置测量经过的时间时会有很大的不同?
- 如何比较两个经过的时间?
- 为什么这个经过的时间(帧时间)计算会锁定我的游戏
- 获取标准::未来<T>::wait_for的经过时间
- C++ 时间机器无法正确计算经过的时间量
- 填充 unordered_map (c++) 后 malloc 的经过时间
- 自当地时间上午8点以来,将时间经过的时间与Boost
- 如何获得Microsoft TTS演讲的经过的时间
- 获取自C++执行以来经过时间的最干净,最简单的方法
- 在 Linux 中,非常高的经过(挂钟)时间和低系统时间的含义
- 16.66ms 帧时间.当 sleep() 只经过整毫秒时,你如何获得完美的 60 fps
- 以格式化字符串的形式获取经过的时间
- 如何在C++中检查经过的时间和分配的内存
- 在visualc++2010中经过的时间
- 如何在没有计时器的情况下确定经过了多少时间
- 如何获得自SFML中按下键以来经过的时间
- 两个时间之间经过的时间,格式为24小时hh:mm:ss
- 如何从steady_clock返回经过的时间作为原始数据类型(double)
- 查找经过的时间
- 在经过时间后做某事C++SFML 2