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

C++ 如何在OpenCV中查找视频的长度?,c++,opencv,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; 但这给了我一个结果,这个结果并不是真正的答案。我该怎么办?请看这篇类似的文章。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;

但这给了我一个结果,这个结果并不是真正的答案。我该怎么办?

请看这篇类似的文章。OpenCV(尚未)正确捕获帧数


事实上,我不确定您今天尝试的功能是否有任何问题。但是,这段代码有一个问题。这里,假设每秒帧数是一个整数值,但情况并非总是如此。例如,许多视频以29.97 FPS的速度编码,该代码将假定int(29.97)=29,这显然会导致视频长度的较大值(以秒为单位)


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

很多cvGetCapture道具都不起作用-它们依赖于操作系统(vfw/directshow)提供正确的值。如果结果重要,您可能希望直接使用ffmpeg