无法从网络摄像头在 OpenCV 中写入视频

问题描述 投票:0回答:1

我正在使用 IP 网络摄像头并从手机摄像头收集视频。我面临的问题是我的代码不编写任何视频。它完美地向我展示了视频流,但我只得到了 1kb 的视频文件。我正在使用 python 3.10、opencv 4.9 和 windows 11 Home 这是我的代码-

codec = cv2.VideoWriter_fourcc(*'mp4v')
output = cv2.VideoWriter('output.mp4', codec, 20.0, (640, 480))

cap = cv2.VideoCapture('http://IP:PORT/video')
......
cv2.imshow("Video", final_image)
output.write(final_image)

我尝试了不同的编解码器(mp4v、XVID、H264)和视频格式(mp4、avi、mkv)组合。我还尝试使用本地文件中录制的视频。但我的代码不写视频。我仍然只得到 1 kb 文件。在某些情况下,我也会在日志中看到这一点 -

[mjpeg @ 00000244989c2340] overread 8

final_image
的形状是
(1280, 720, 3)

python opencv video-capture ip-camera video-codecs
1个回答
-1
投票
import cv2

codec = cv2.VideoWriter_fourcc(*'mp4v')
output = cv2.VideoWriter('output.mp4', codec, 20.0, (640, 480))

cap = cv2.VideoCapture('http://IP:PORT/video')

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break

    final_image = frame
    cv2.imshow("Video", final_image)
    
    # Write frame to file
    if output.isOpened():
        output.write(final_image)
    else:
        print("Failed to write frame")

    if cv2.waitKey(1) == ord('q'):
        break
#release 
cap.release()
output.release()
cv2.destroyAllWindows()
© www.soinside.com 2019 - 2024. All rights reserved.