我正在尝试阅读,进行一些处理,然后在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和帧数?