파이카메라를 이용한 MMAL MOTION – MJPEG 스트리밍

 

라즈베리 파이의 공식 카메라 모듈(?)인 파이 카메라(PiCamera)를 이용해서 CCTV를 만드는 방법입니다. CCTV라고 하기엔 좀 거창한 감이 있긴 한데, 기본은 JPG 이미지를 연속으로 스트리밍해서 웹캠처럼 보여지도록 하는 것입니다. MJPEG 라고 합니다.

 

먼저 전원을 끄고, 카메라를 라즈베리 파이에 연결합니다. 연결 방법은 아래 페이지에 자세히 나와 있습니다.

http://www.raspberrypi-spy.co.uk/2013/05/installing-the-raspberry-pi-camera-module/

 

파이 카메라는 간단한 설정만으로 사용이 가능합니다. 라즈베리 파이 설정을 실행합니다.

  • sudo raspi-config

12560832864_ffe6717aaf_z.jpg

Enable Camera 항목을 선택하고 Enable 선택해서 활성화 해주세요.

12560354105_468c406b98_z.jpg

이 과정은 재부팅이 필요합니다.

 

카메라를 테스트 해봅니다. 먼저 preview 이미지를 가져오기.

  • raspistill -v -o

Raspistill 을 이용해서 사진을 찍습니다.

  • raspistill -v -o xxx.jpg

Raspivid 를 이용하면 녹화가 가능합니다. 녹화 기본 설정이 1080p (1920×1080)​ 입니다. 5초간 비디오를 녹화해 봅니다.

  • raspivid -t 5000 -o xxx.h264

 

이제  Motion-MMAL 을 이용해서 스트리밍을 할 수 있도록 설정해 보겠습니다.

JPG 이미지 파일을 연속적으로 전송하는 형태로 동작하는 것이 MJPEG 입니다. 이걸 지원해주는 스트리밍 어플리케이션이 motion 입니다. 그런데 원래 motion 어플은 USB 웹캠 같은 모듈용으로 설계된 것 같습니다. PiCamera 를 Motion과 연동하기 위해서는 설치과정이 조금 다릅니다. Motion-MMAL을 설치해야 합니다.

 

아래 명령으로 motion 을 설치합니다.

  • sudo apt-get install motion

설치가 끝나면 아래 명령으로 motion 패키지를 삭제합니다.

  • sudo apt-get remove motion

설치하자마자 다시 지워버리다니… 뭔가 삽질 같지만 motion을 설치하면서 외부 모듈/패키지와 관련된(dependency) 설정이 만들어집니다. motion 패키지를 지워도 이 설정들이 남아있기 때문에 이렇게 사용합니다. 일반적인 Motion 패키지가 삭제되었으므로 대신 MMAL 용 motion 파일을 다시 설치하면 됩니다.

Motion-MMAL을 설치하기 위한 가장 간단한 방법은 미리 컴파일된 버전을 가져와서 사용하는 것입니다. 먼저 적당한 폴더로 이동해서 아래 작업을 실행합니다.

압축을 풀고

  • tar zxvf motion-mmal.tar.gz

설정 파일을 수정해 줍니다.

  • sudo nano motion-mmalcam.conf

아래처럼 화면이 나오면 필요한 부분들을 수정합니다.

12560353325_bd3dbf0e35_c.jpg

데몬 설정

  • daemon on

이미지 회전 설정 (기울어져서 보이는 경우 수평을 맞추는 작업, 0-90-180-270 중 선택)

  • rotate 0

Image resolution 640×480 (이미지 해상도가 높으면 끊김, 시스템 불안정의 원인이 될 수 있음)

  • width 640

이미지 캡쳐 (동작이 감지되면 이미지를 저장)

  • output_pictures off

비디오 포맷으로 저장

  • ffmpeg_output_movies off

모든 네트웍에서 접근이 가능하도록 설정

  • stream_localhost off

Ctrl-X –> Y 를 눌러서 저장합니다.

 

아래와 같이 Motion 실행합니다.

  • sudo ./motion -c motion-mmalcam.conf

브라우저에서 라즈베리 파이 IP, 8081 포트로 접속하면 스트리밍 영상을 보실 수 있습니다. 단, 크롬과 IE에서는 안보이네요.

PC 브라우저가 지원하지 않는다면 아래 링크에서 전용 프로그램을 받아서 보세요.

 http://www.softpedia.com/get/Internet/Other-Internet-Related/Motion-JPEG-Player.shtml

 

Motion을 데몬(백그라운드 서비스)로 실행하고 싶으시면 아래처럼 해보세요.

  • sudo cp motion /usr/bin/
  • sudo cp motion-mmalcam.conf /etc/motion/
  • sudo nano /etc/default/motion
    데몬 설정을 yes 로 수정
  • sudo service motion start
  • sudo service motion stop

(데몬 상태에서의 사용법은 추후 업데이트 예정)

 

주의!!! Motion-MMAL 을 실행할 때 libjpeg.so 9 is missing 과 유사한 에러가 발생한다면 해당 라이브러리 설치가 필요합니다. 아래 명령어를 실행해서 라이브러리 설치하고 다시 실행하면 됩니다.

  • sudo apt-get install libjpeg62

 

xxx

 

 

일반 USB 웹캠을 사용한 Motion 사용 방법은 아래 링크를 참고하세요.

 

참고자료

 

 

Post Author: TORTUGA

TORTUGA
궁금하신 점은 새로 개편한 홈페이지의 QnA 게시판을 이용해주세요!!!!!!! http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=qna

12 thoughts on “파이카메라를 이용한 MMAL MOTION – MJPEG 스트리밍

    근종현

    (2015년 7월 7일 - 9:06 오전)

    좋은 자료 감사합니다.

    고프

    (2015년 11월 10일 - 3:19 오전)

    좋은 자료 정말 감사합니다. 정말 궁금한것이 있는데 저기 위에 보면 동작이 감지도면 이미지 캡쳐라는 설정이 있는데 제가 안드로이드로 신호를 보내면 캡처를 하는 기능을 추가하고싶은데 저설정말고 신호를 받으면 캡처가되는 것은 없나요??

      TORTUGA

      TORTUGA

      (2015년 11월 10일 - 12:32 오후)

      그건 직접 프로그래밍 하셔야 합니다. 먼저 아두이노에서 응답을 받을 방법을 고려해야 하고.. 응답을 받으면 쉘 커맨드로 이미지를 캡쳐하는 방식으로 구현해야 할 겁니다.

        고프

        (2015년 11월 10일 - 3:15 오후)

        감사합니다. 저는 다르게 아두이노는 쓰지 않고 라즈베리파이로 지금 서버 열어서 mjpg스트리머를 사용해서 안드로이드로 영상을띄우느데 까지는 성공했는데 캡처버튼을 누르면 라즈베리에서 스넵샷을 찍어 폰으로 전송을 하는것이라. 소켓통신까지는 다짜져잇는데 쉘을 공부해서 다시 시도해봐야겠어요 .

          고프

          (2015년 11월 10일 - 3:17 오후)

          그럼혹시 자바에서 파이카메라를 제어 할 수 있는 방법이라도 없나요?? 그러면 지금 찍고있는 영상을 그림으로 가져오도록 코딩하면될 듯한데 인터럽트처리만 쪼금하면 될꺼같아서 이쪽이 더 쉬울꺼같기는한데…

            TORTUGA

            TORTUGA

            (2015년 11월 12일 - 9:03 오전)

            자바는 잘 모르겠는데 파이썬을 이용해서 카메라 제어가 가능합니다. 파이카메라 라이브러리 설치해서 사용하시면 됩니다.

    고프

    (2015년 11월 16일 - 5:22 오전)

    답변감사합니다 시도해보겠습니다

    열혈청년

    (2016년 1월 17일 - 3:17 오전)

    현재 안드로이드 라즈베리파이 캠과 스트리밍 연동을 해보고있는데요.
    darwin streaming 해보려니, 라즈베리파이에서 설치가 잘안되서 motion쪽 시도해봤습니다.
    근데 문제가, mjpeg방식이라 그런지, 일단 옵션에서 framerate를 25로 바꿔서 해봤는데도, 사진 프레임빈도가 너무 안좋았구요 제가확인해봣을땐..
    그리고 , 사진이 다 찍혀서 jpg형식으로 하드에 저장이 되네요 ..혹시 제가 뭐 잘못한 부분이있는걸까요
    프레임레이트도 거의 2~3정도 수준으로 나와서요..

    열혈청년

    (2016년 1월 17일 - 3:20 오전)

    아 output_picture 옵션이 on이엿네요. 사진저장문제는 해결햇는데, 혹시 프레임이 저만큼 안나오시나요?

      TORTUGA

      TORTUGA

      (2016년 1월 18일 - 5:38 오후)

      제 경우에는 MMAL motion 실행할 때 변경된 옵션이 적용이 안되는 문제가 있어서요.. 대신 MJPG Streamer를 이용해서 테스트 해봤습니다.
      http://www.hardcopyworld.com/ngine/aduino/index.php/archives/2431
      설정을 10frame으로 변경해서(640×480) 해도 초당 2~3 프레임 밖에 안나오네요. 브라우저 리프레시가 느려서 그런건가 아님 MJPG의 한계인가 싶기도 하구요…

    준코프

    (2016년 8월 23일 - 12:28 오후)

    ./motion : error while loading shared libraries : libavformat.so.53: cannot open shared object file : No such file or directory

    라고 메시지가 뜹니다. 어떻게 해결해야 될지요…..ㅠㅠ

    지금 초음파 센서를 이용하여 센서 이벤트 시 녹화가 되게는 했는데, 항상 영상이 보이다가 센서 이벤트 시 녹화되도록 하려고 하고 있습니다. 도움주시면 감사 드립니다.^^

    비맞는중

    (2018년 5월 15일 - 12:22 오전)

    혹시 총 비용이 얼마정도 나오나요?

댓글 남기기

이메일은 공개되지 않습니다.