RPi3 中的 cv2.VideoWriter 比实际速度快

Pra*_*sad 2 python opencv raspberry-pi3

我正在尝试录制罗技网络摄像头视频。摄像机能够录制它,但 40 秒的视频仅以 nX 速度录制 6 秒。我参考了以下链接的解决方案,但它无法解决 RPi 中的问题。重要的是代码可以在 Ubuntu 桌面上找到,但可能 RPi 处理速度较慢。

这是我的代码片段:

fourcc = cv2.cv.CV_FOURCC(*'XVID')
videoOut = cv2.VideoWriter("video_clip.avi", fourcc, 20.0, (640, 480))
start_time = time.time()
frame_count = 0
while True:
    ret, frame = cap.read()
    videoOut.write(frame)  # write each frame to make video clip
    frame_count += 1

    print int(time.time()-start_time)  # print the seconds
    if int(time.time()-start_time) == 10:
        videoOut.release()
        break
        # get out of loop after 10 sec video
print 'frame count =', frame_count 
# gives me 84 but expected is 20.0 * 10 = 200
Run Code Online (Sandbox Code Playgroud)

Mee*_*iya 5

前段时间我也有同样的问题。我做了很多搜索,但没有找到解决方案。问题是传递的 fps 是视频播放的速率。这并不意味着视频将以该 FPS录制。AFAIK,没有直接的方法来设置记录的 FPS。如果您记录的 FPS 太高,您可以降低采样(即每个时间段仅保留 1 帧)。但从你的描述来看,似乎比要求的要低很多。这是硬件限制,对此无能为力。

关于设置记录的 FPS,我找到了一个解决方法。我在捕获列表中的所有帧后创建 videoWriter 。这样,我就可以计算记录的FPS并在创建时将其传递给VideoWriter。