![](/img/trans.png)
[英]How to change frame rate FPS of an existing video using openCV python
[英]OpenCV gives incorrect FPS and frame count of a video
我正在尝试阅读,进行一些处理,然后使用 python 中的 OpenCV 保存.mp4
视频,但cap.get(cv2.CAP_PROP_FPS)
为某些视频返回错误的 FPS。
所以我不会 go 详细介绍代码的作用,因为它与手头的问题无关。 我注意到我的程序中的 output 视频播放速度太快,在调试时我决定只看当我简单地播放输入视频时它的外观。
所以播放代码看起来像这样:
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
但是视频播放速度太快,所以我 go 右击 -> 属性 -> 详细信息,果然它说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 和帧数?
我知道这个线程很旧但是人们仍然遇到这个问题,这似乎是一个持续的问题: https://github.com/opencv/opencv/issues/16821 。 我遇到了与.mp4
相同的问题,为我解决的是导出到.mov
。 不确定为什么.mp4
有问题,但似乎是 github 问题的普遍趋势
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.