gpt4 book ai didi

python - 视频播放比预期快很多

转载 作者:行者123 更新时间:2023-12-02 16:56:16 25 4
gpt4 key购买 nike

我知道 VideoWriter 对象的FPS应该与网络摄像头的FPS相匹配。我的网络摄像头是Logitech HD Pro Webcam C920,正如您所看到的,规格说它的FPS为30。我仍然使用cap.get(CV_CAP_PROP_FPS)(返回30.0)来确保与FPS匹配,而不是对值进行硬编码。

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('output.avi', fourcc, cap.get(CV_CAP_PROP_FPS), (640, 480))

print(cap.get(CV_CAP_PROP_FPS)) # 30.0

这是我捕获视频每一帧的方式:
while(cap.isOpened()):
# Capture frame-by-frame
ret, frame = cap.read()
if ret == True:
out.write(frame)

我的问题是,即使使用匹配的FPS,输出视频( output.avi)的回放速度也大约是x3(根据我的非科学估算),这显然不是我想要的。我尝试使用不同的编解码器,但是发生相同的问题。

关于SO,有几个问题正在解决同一问题:

OpenCV, captured video runs faster than original camera video!
OpenCV Video capture and fps problem
OpenCV: Video Recording is too fast
http://answers.opencv.org/question/16522/video-recording-is-too-fast/

其中大多数建议使作者的FPS与网络摄像头的FPS相匹配,而我确实做到了。如果我将FPS硬编码为10,则视频播放似乎正常,但是我不想这样做,因为它必须与许多摄像机通用。

我现在真的不知道该怎么办,但我会一直寻找直到找到解决方案。任何见识表示赞赏!

最佳答案

@MBo正确回答了为什么视频播放速度比预期的要快,但是我想为遇到相同问题的人们提供更多信息。

首先,这与Raspberry Pi也有很大关系,因此使用性能更高的计算机的人可能不会遇到此问题。

即使仅从摄像机读取视频流而不写入视频文件,也可以在640 x 480的情况下实现18-20 FPS的最大值。在1920 x 1080时,最大FPS为1-2。原因是网络摄像头帧是顺序读取的,因此仅使用CPU的一个内核进行处理。

在不同线程中读取帧时,可以在640 x 480的分辨率下实现24 FPS。不过,如果您有兴趣,请参阅this question,以获取有关并行读取网络摄像头框架的更多信息。

对于Raspberry Pi,我发现的唯一真正视频解决方案是使用official camera module,它直接连接到GPU,并以30 FPS提供1080p。请参阅this question,以了解为什么Raspberry Pi camera module是USB网络摄像头更好的替代方法。

关于python - 视频播放比预期快很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32706613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com