带视频文件上限的cv2.VideoWriter

时间:2020-04-14 14:45:38

标签: python-3.x opencv

在通过“ cv2”保存视频文件期间,出现了一个奇怪的问题。如果从网络摄像头捕获视频,则此代码效果很好,但是如果从文件捕获视频(例如cap = cv2.VideoCapture(“ test.avi”)),则将形成没有任何流的空文件。

import cv2
cap = cv2.VideoCapture(0)

cap.set(cv2.CAP_PROP_FRAME_WIDTH, w)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, h)

out = cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc('M','J','P','G'), fps, (w, h))

while cap.isOpened():
    ret, frame = cap.read()
    out.write(frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
       break

out.release()
cap.release()
cv2.destroyAllWindows()

我试图更改.avi,.ts和输出等输入视频文件的格式,但没有任何改变

谁知道为什么这个问题发生在我身上?

2 个答案:

答案 0 :(得分:0)

您是否尝试打印cam.isOpened()输出?您可用的相机可能已初始化为变量,而不是0。

尝试cap = cv2.VideoCapture(-1)。除此之外,您还在Linux上运行它吗?确保已安装ffmpeg。

答案 1 :(得分:0)

好吧,一段时间后我发现了问题所在。这部分使我无法完成视频的定稿:

if cv2.waitKey(1) & 0xFF == ord('q'):
   break

我删除“ break”之后,一切都变得正常了。也许是因为,与从摄像机接收到的流不同,来自视频文件的流是有限的,而我的中断阻止了终结。