以Motion JPEG格式保存OpenCV输出,出现“编解码器ID为7时不支持”MJPG“”错误

j0pj023g  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(182)

我想将摄像机输出保存为运动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问题。提前感谢。

yb3bgrhw

yb3bgrhw1#

.mjpeg不是任何已知容器格式的有效后缀。
我相信你并不打算写一个没有容器的 * 原始MJPG流 *。这是 * 非常非常 * 很少有用的,需要专业知识。
您有两个选项:
1.我在.avi容器中使用MJPG,因为它内置在OpenCV中,甚至不需要ffmpeg
1.使用ffmpeg理解的任何内容,可以是.mpg容器、.mov.mkv或其他任何内容

相关问题