2012-03-09 55 views
2

我想在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; 

但这给了我一个比真实答案还要少的结果。我需要做什么?

+1

许多cvGetCapture道具都不起作用 - 它们依靠提供正确值的操作系统(vfw/directshow)。如果结果很重要,您可能想直接使用ffmpeg – 2012-03-09 05:15:20

回答

5

实际上的数量,我不知道是否有与你的努力今天的功能的任何问题。但是,这段代码存在问题。在这里,假定每秒帧数是一个并非总是如此的整数值。例如,许多视频以29.97 FPS编码,并且此代码将假设为int(29.97)= 29,这显然会导致视频长度的更大值(以秒为单位)。

如果我使用浮点值(float)而不截断它们,计算似乎对我来说工作正常。