2017-05-10 2 views
0

RPi Cam을 사용하여 이미지를 캡처하고 저장하는 프로그램을 작성했습니다.
이 시스템은 잘 작동하지만 갑자기 나는 다음과 같은 오류를 얻을 :2 일 후에 Raspberry Cam이 작동을 멈춤

mmal: mmal_vc_port_enable: failed to enable port 
vc.ril.image_encode:out:0(JPEG): ENOMEM 
mmal: mmal_port_enable: failed to enable port 
vc.ril.image_encode:out:0(JPEG) 
(0xc8a100) (ENOMEM) 
Traceback (most recent call last): 
    File "./Test_cam.py", line 300, in <module> 
    putfunc() 
    File "./Test_cam.py", line 169, in putfunc 
    oneshot(_client_id) 
    File "./Test_cam.py", line 137, in oneshot 
    _cam.capture(ifn, use_video_port=True,resize=(1920,1080),splitter_port=0) 
    File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 1418, in capture 
    encoder.start(output) 
    File "/usr/lib/python2.7/dist-packages/picamera/encoders.py", line 1126, in start 
    super(PiCookedOneImageEncoder, self).start(output) 
    File "/usr/lib/python2.7/dist-packages/picamera/encoders.py", line 377, in start 
    self.output_port.enable(self._callback) 
    File "/usr/lib/python2.7/dist-packages/picamera/mmalobj.py", line 1249, in enable 
    prefix="Unable to enable port %s" % self.name) 
    File "/usr/lib/python2.7/dist-packages/picamera/exc.py", line 184, in mmal_check 
    **raise PiCameraMMALError(status, prefix)** 
**picamera.exc.PiCameraMMALError: Unable to enable port vc.ril.image_encode:out:0: Out of memory** 

이 사람이 나를 도울 수 있습니까?

+0

당신은 당신의 오류 로그를 포맷해야합니다. –

+0

고마워요! 닫히지 않고 PiCamera를 열면됩니다! :) –

+0

SD 카드와 같은 어리석은 것이 아니라 캡처 한 모든 이미지가 가득 찼습니까? – barny

답변

0

관련 :
오류 메시지 "_mmal : mmal_vc_port_enable가 : port_을 활성화하는 데 실패는"에서 libmmal.so입니다.

은 경고 API - mmalobj
에서 다음을 찾을 수
의 API이 부분은 여전히 ​​향후 버전에서 변경 실험적 될 수 있습니다.

당신이 최신 picamera modulelibmmal.so를 사용하고 있는지, 확인합니다. picameralibmmal.so이므로 verfiy도 호환되는 버전을 사용하고 있습니다.

추가 정보 사이트 :
raspberrypi.org: Pure Python camera interfacepicamera
SO Answer: HowTo update libmmal.so


코멘트의 유지 관리자 : 나는 "메모리"는 "메모리 부족"용어

을에 의미하는 무엇을 잘 모릅니다

후속 오류 일 수 있습니다.

오류 메시지 :
mmal는 : mmal_vc_port_enable : 아웃 : : 0 (JPEG) :

가 뭔가 잘못이 있어야합니다

ENOMEM 포트를
vc.ril.image_encode 수 있도록 실패 번 포트.
또한 오랜 시간 실행으로 인해 버퍼 오버런이 발생할 수 있습니다.


에가 손상되지 당신의 카메라를 확인, 다음 스크립트를 시도 :

from time import sleep 
from picamera import PiCamera 

camera = PiCamera() 
camera.resolution = (1024, 768) 
camera.start_preview() 
# Camera warm-up time 
sleep(2) 
camera.capture('foo.jpg', resize=(320, 240)) 
0
while (time.time() - start) < vterm: 
    _cam.annotate_text = id + "\n" + time.strftime('%Y-%m-%d %H:%M:%S') 
    nt = time.time() 
    if (nt - pt) > iterm: 
     ifn = tmpfname('jpg') 
     _cam.capture(ifn, use_video_port=True,resize=(1920,1080),splitter_port=0) 
     tmp2nofile(nt, _path['live'], ifn, 'jpg') 
     pt = nt 
     if _debug: 
      print 'image',ifn 
    time.sleep(0.1) 
_cam.stop_recording(splitter_port=1) 
tmp2nofile(start, _path['live'], vfn, 'h264') 
_cam.stop_preview() 
_cam.close()