我正在使用 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)
。
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()