Python OpenCV提供不正确的FPS和视频帧数

Python OpenCV提供不正确的FPS和视频帧数,python,opencv,video,mp4,Python,Opencv,Video,Mp4,我正在尝试阅读,做一些处理,然后使用python中的OpenCV保存.mp4视频,但是cap.get(cv2.cap\u PROP\u FPS)为一些视频返回错误的FPS 所以我不打算详细介绍代码的功能,因为它与当前的问题无关。我注意到我的程序输出的视频播放得太快了,在调试时,我决定只看一下当我简单地播放输入视频时它的样子 因此,回放代码如下所示: cap = cv2.VideoCapture(video_path) video_fps = cap.get(cv2.CAP_PROP_FPS)

我正在尝试阅读,做一些处理,然后使用python中的OpenCV保存
.mp4
视频,但是
cap.get(cv2.cap\u PROP\u 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
但是视频播放得太快了,所以我右键单击->属性->详细信息,果然显示了
每秒帧数:49
。。。但我知道我的大多数视频都是25 fps(约为49.8的一半),所以出于好奇,我将延迟更改为两倍:
cv2.waitkey(int(2000/video_fps))
突然,视频以完美的速度播放

另一个奇怪的是,当我将
cap.get(cv2.cap\u PROP\u POS\u FRAMES)
的结果除以视频的秒长时,我又得到了49.8,因为我知道长度必须是正确的,我只能猜测OpenCV的帧数是错误的(?)

因此,我的问题是:

1) 这到底是怎么回事


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

是否可以计算读取图像的数量并将其与属性进行比较?也许一个图像是由多个帧组成的?