我想将摄像机输出保存为运动JPEG(MJPG)格式。下面的代码,
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
if (cap.isOpened() == False):
print("Unable to read camera feed")
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
frame_per_sec = int('10')
out = cv2.VideoWriter('output.mjpeg',cv2.VideoWriter_fourcc('M','J','P','G'), (frame_per_sec), (frame_width,frame_height))
while(True):
ret, frame = cap.read()
if ret == True:
# Write the frame into the file 'output.mjpeg'
out.write(frame)
# Display the resulting frame
cv2.imshow('frame',frame)
# Press Q on keyboard to stop recording
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
运行时,我收到以下错误,
[ WARN:0] OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
OpenCV: FFMPEG: tag 0x67706a6d/'mjpg' is not supported with codec id 7 and format 'mjpeg / raw MJPEG video'
我能做些什么来解决这些问题呢?我试过改变大小写,('M','J','P','G'到'm','j','p','g')没有成功。感谢任何关于解决上述问题的建议,以及GStreamer问题。提前感谢。
1条答案
按热度按时间yb3bgrhw1#
.mjpeg
不是任何已知容器格式的有效后缀。我相信你并不打算写一个没有容器的 * 原始MJPG流 *。这是 * 非常非常 * 很少有用的,需要专业知识。
您有两个选项:
1.我在
.avi
容器中使用MJPG,因为它内置在OpenCV中,甚至不需要ffmpeg1.使用ffmpeg理解的任何内容,可以是
.mpg
容器、.mov
或.mkv
或其他任何内容