OpenCV提供错误的FPS和视频的帧数

时间:2019-01-14 21:23:00

标签: python opencv video mp4

我正在尝试阅读,进行一些处理,然后在Python中使用OpenCV保存.mp4视频,但是cap.get(cv2.CAP_PROP_FPS)对于某些视频返回了错误的FPS。

因此,我将不涉及代码功能的全部细节,因为它与当前的问题无关。我已经注意到程序中的输出视频播放得太快了,调试时我决定只看一下输入视频,便会看到它的外观。

所以播放代码看起来像这样:

cap = cv2.VideoCapture(video_path)
video_fps = cap.get(cv2.CAP_PROP_FPS)                  
#returns 49.8

while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        cv2.imshow('a', frame)
        cv2.waitkey(int(1000/video_fps))
    else:
        break

但是视频播放速度太快,因此我右键单击->属性->详细信息,并确保它显示frames per seconds: 49 ...但我知道我的大多数视频都是25 fps(大约一半) 49.8),因此出于好奇,我将延迟更改为两倍:cv2.waitkey(int(2000/video_fps)) 突然之间,视频以完美的速度播放。

另一个奇怪的是,当我将cap.get(cv2.CAP_PROP_POS_FRAMES)的结果除以以秒为单位的视频长度时,我又得到了49.8,并且由于我知道长度必须是正确的,所以我只能猜测OpenCV得到了错误的帧数(?)

所以我的问题是:

1)这到底是怎么回事?

2)有没有更好,更可靠的方法来检查视频fps和帧数?

0 个答案:

没有答案