繁体   English   中英

OpenCV 给出视频的错误 FPS 和帧数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM