如何在OpenCV中查找视频的长度?

时间:2012-03-09 04:48:01

标签: c++ opencv

我想在OpenCV中找到视频捕获的长度;

int frameNumbers = (int) cvGetCaptureProperty(video2, CV_CAP_PROP_FRAME_COUNT);
int fps = (int) cvGetCaptureProperty(video2, CV_CAP_PROP_FPS);
int videoLength = frameNumbers / fps;

但是这给了我一个小于真实答案的结果。我该怎么办?

2 个答案:

答案 0 :(得分:5)

实际上,我不确定您今天尝试过的功能是否存在任何问题。但是,此代码段存在问题。这里,假设每秒帧数是一个整数值,但并非总是如此。例如,许多视频以29.97 FPS编码,并且此代码假设int(29.97)= 29,这显然导致视频长度的秒值更大。

如果我使用浮点值(浮点数)而不截断它们,计算似乎对我来说很好。

答案 1 :(得分:0)

看到这个类似的帖子。 OpenCV无法(尚)正确捕获帧数

OpenCV captures only a fraction of the frames from a video file