ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Raspberry Pi에서 mjpg-streamer를 사용하여 웹캠 스트리밍하기
    Raspberry Pi/Camera 2018. 10. 28. 19:33


    라즈베리파이에 연결된 카메라로부터 캡쳐된 영상을 웹브라우저에서 볼 수 있도록 mjpg-streamer를 사용하는 방법을 설명하고 있습니다.


    다음 블로그 글을 참고하여 진행했습니다.


    https://desertbot.io/blog/how-to-stream-the-picamera



    OpenCV 3.x를 사용해야 합니다. 

    OpenCV 4.x에서는 OpenCV C API가 제거되어 빌드시 에러가 발생합니다. 


    1. 라즈베리파이에 웹캠 또는 파이 카메라를 연결하고 사용할 수 있도록 설정합니다.



    Raspberry Pi Camera Module( pi camera ) 사용하는 방법

    http://webnautes.tistory.com/929  





    2. mjpg-streamer 소스 코드를 다운로드 받을 디렉토리를 생성합니다.


    pi@raspberrypi:~ $ mkdir project
    pi@raspberrypi:~ $ cd project

    pi@raspberrypi:~/project $




    3. 깃허브에서 소스 코드를 다운로드 받기위해서 git가 필요합니다.


    pi@raspberrypi:~/project $ sudo apt-get install git




    4. mjpg-streamer 소스 코드를 다운로드를 합니다.


    pi@raspberrypi:~/project $ git clone https://github.com/jacksonliam/mjpg-streamer.git




    5. mjpg-streamer 소스 코드를 컴파일하기 위해 필요한 패키지를 설치합니다.


    pi@raspberrypi:~/project $ sudo apt-get install cmake python-imaging libjpeg-dev build-essential




    6. mjpg-streamer 소스 디렉토리로 이동하여 컴파일 및 설치를 진행합니다.

    pi@raspberrypi:~/project $ cd mjpg-streamer/mjpg-streamer-experimental/
    pi@raspberrypi:~/project/mjpg-streamer/mjpg-streamer-experimental $ make CMAKE_BUILD_TYPE=Debug
    pi@raspberrypi:~/project/mjpg-streamer/mjpg-streamer-experimental $ sudo make install
    pi@raspberrypi:~/project/mjpg-streamer/mjpg-streamer-experimental $ cd
    pi@raspberrypi:~ $




    7. 웹캠으로부터 캡처한 영상을 HTTP 포트 8090으로 스트리밍하도록 합니다.


    pi@raspberrypi:~ $ mjpg_streamer -i "input_uvc.so" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www/"




    8. 라즈베리파이 카메라를 사용할 경우에는 video0 디바이스 파일을 생성하거나  input_uvc.so 대신에 input_raspicam.so를 사용하면 됩니다. 카메라가 뒤집혀서 연결되기 때문에 -vf 옵션을 추가해야 합니다.  첫번째 방법에선 vf 옵션이 적용안되었습니다.


    참고로 첫번째 방법이 더 빠릅니다.


    pi@raspberrypi:~ $ sudo modprobe bcm2835-v4l2
    pi@raspberrypi:~ $ mjpg_streamer -i "input_uvc.so" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www/"


    또는


    pi@raspberrypi:~ $ mjpg_streamer -i "input_raspicam.so -vf" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www/"



    자세한 옵션은 다음처럼 확인 가능합니다.


    pi@raspberrypi:~ $ mjpg_streamer -i 'input_raspicam.so --help'
    pi@raspberrypi:~ $ mjpg_streamer -i 'input_uvc.so --help'




    9. 카메라로부터 영상을 캡쳐하여 웹으로 전송되는 상황을 볼 수 있습니다.





    10. PC의 웹브라우저로 라즈베리파이_아이피주소:8090에 접속합니다.





    11. 왼쪽 메뉴에서 Static을 선택할 때 마다 스냅사진이 새로 갱신됩니다.





    12. 왼쪽 메뉴에서 Stream을 선택하면 실시간 영상을 볼 수 있습니다.





    13. 웹문서없이 이미지만 받고 싶다면 다음 주소를 사용하면 됩니다.



    스냅사진 - 라즈베리파이_아이피주소:8090/?action=snapshot





    실시간 영상 - 라즈베리파이_아이피주소:8090/?action=stream





    코드로 접근하기 위해서는 OpenCV를 사용하면 됩니다. 아래 포스트를 참고하세요..


    mjpg-streamer를 사용한 웹 스트리밍을 OpenCV에서 가져오기
    https://webnautes.tistory.com/1262



    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구독하기


    댓글 60

    • 김선희 2018.11.10 23:47


      안녕하세요 평소에 많은 도움 받고 있습니다 ^^.
      직접 해보니 라즈비안 내에서는 동영상이 streaming되는 웹페이지에 접속할 수 있는데
      외부(windows10 explorer)에서는 같은 주소로 접속해도 불가능하더군요.
      혹시 라즈베리파이를 고정아이피로 설정하지 않아서 인가요
      아니면 본 예제가 원래 라즈비안 내에서만 가능하게 만들어진 건가요?

      혹시 라즈베리파이 3B+의 고정아이피를 설정하는 방법도 알려주실 수 있나요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.11.11 06:28 신고


        같은 네트워트(예를 들어 같은 공유기)를 사용해야 접근이 가능합니다.

        고정아이피는 다른 네트워크에서 접근가능한 아이피를 얘기하시는 건가요?

    • Youngho 2019.02.19 10:39


      안녕하세요. 저에게 이 블로그가 정말 많은 도움이 되고 있습니다.
      감사합니다.

      혹시 라즈베리파이와 스마트폰 혹은 PC간의 TCP/IP통신으로 스트리밍하는 방법은 없을까요?
      공유기나 인터넷 없는 환경에서 사용해봤으면 해서요.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.02.19 10:44 신고


        가능합니다.

        문자열을 전송하는 것처럼 이미지를 전송하면 됩니다. 코드에 차이가 없습니다.

        한쪽에서 카메라로 찍은 영상을 전송하면
        다른쪽에서는 영상을 받아서 화면에 출력해주면 됩니다.

      • Youngho 2019.02.19 10:59


        아 그렇군요.
        퍼포먼스가 잘 나오면 좋겠는데.
        나중에 혹시 괜찮으시면 한번 포스팅해주실 수 있으신가요? ㅎㅎ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.02.19 11:25 신고


        일단 해보고 막히는 부분 생기면 문의주세요. TCP 서버/ 클라이언트 채팅 소스를 구해서 수정하면 됩니다

      • Youngho 2019.02.19 11:28


        오 감사합니다.
        일단 해볼게요!

      • Youngho 2019.02.20 15:14


        안녕하세요 !
        라즈베리파이3 B+를 서버로 하고 안드로이드 폰을 클라이언트로 하여 데이터를 받아오는걸 해보고 있는데, 같은 와이파이 환경에 있어야만 작동을 하고 환경에 따라 ip도 변하는데, 혹시 인터넷 환경이 없는 상태에서 고정된 ip로 통신하는 방법이 없을까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.02.20 15:56 신고


        인터넷이 없더라도 무선 공유기만 있으면 라즈베리파이와 안드로이드폰 간에 TCP 통신 테스트를 해볼 수 있습니다.

      • Youngho 2019.02.20 16:21


        아 그렇군요. mjpg-streamer를 사용한 위 방법도 사실은 인터넷없이 공유기만 있어도 연결이 가능한건가요?

        예전에 네트워크 카메라 사용해서 비전시스템 구축할때 인터넷 연결이나 공유기 없이 카메라와 PC를 1:1로 랜선 연결해서 사용해본 적이 있는데 무선 방식으로 라즈베리파이를 이용하여 비슷한 시스템을 만들기는 어려울까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.02.20 16:51 신고


        무선방식(WiFi)를 사용해서 PC와 라즈베리파이를 1:1로 연결하는 것은 힘들듯합니다.

        하지만 거리가 멀지 않다면 블루투스로는 가능할듯합니다.

        그리고 찾아보니 언급한 방식을 라즈베리파이와 PC사이에서도 사용할 수 있군요.

        http://www.circuitbasics.com/how-to-connect-to-a-raspberry-pi-directly-with-an-ethernet-cable/

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.02.20 16:53 신고


        갑자기 떠올라서 찾아보니 WiFI Direct를 라즈베리파이3도 지원한다는 군요..

        조만간 저도 해봐야 겠어요.

        https://raspberrypi.stackexchange.com/questions/45451/connect-to-raspberry-pi-3-over-wi-fi-direct

      • Youngho 2019.02.20 16:57


        오 좋네요! 저도 한번 찾아서 진행해보겠습니다. 후에 포스팅하시면 비교해볼 수 있겠네요.

    • 장세웅 2019.03.12 11:03


      make CMAKE_BUILD_TYPE=Debug를 진행하던 중

      compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
      이함수가 선언되지 않았다는 오류가 발생하는데 혹시 해결 방법이 있을까요?


      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp:86:5: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
      " Help for input plugin..: "INPUT_PLUGIN_NAME"\n" \
      ^
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp: In function ‘void* worker_thread(void*)’:
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp:408:34: error: ‘CV_IMWRITE_JPEG_QUALITY’ was not declared in this scope
      compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
      ^~~~~~~~~~~~~~~~~~~~~~~

      • 장세웅 2019.03.12 11:07


        참고로 OPENCV4.0.1 설치를 완료한 상태입니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.03.12 11:25 신고


        OpenCV 4.0 이상에서 C-API를 제거해서 발생한 문제입니다. 해당 파일을 열어서 앞에 붙은 CV_를 제거해보세요.

      • 장세웅 2019.03.12 11:39


        cv::로 바꿔서 문제를 해결했습니다.
        하지만
        /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp: At global scope:
        /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:173:16: error: cannot declare variable ‘g_numpyAllocator’ to be of abstract type ‘NumpyAllocator’
        NumpyAllocator g_numpyAllocator;



        /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:150:40: error: ‘cv::AccessFlags’ has not been declared
        bool allocate(cv::UMatData* u, cv::AccessFlags, cv::UMatUsageFlags usageFlags) const

        이와 같은 에러가 발생합니다.
        해결방법이 있을까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.03.12 11:45 신고


        cv: 붙인 상수가 존재하지 않는다는 에러입니다. 에러메시지에 있는 상수앞에 cv:를 제거하세요

    • YSJ 2019.04.11 18:40


      안녕하세요 평소에 도움 많이 받고 있습니다.
      스트리밍을 그래로 해보려고 하는데
      make CMAKE_BUILD_TYPE=Debug 하는 도중 계속 43%에서

      이와 같은 오류코드가 발생하는데 어떻게 해결해야 할까요??
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp: In member function ‘cv::UMatData* NumpyAllocator::allocate(int, const int*, int, void*, size_t*, int, cv::UMatUsageFlags) const’:
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:121:92: error: invalid conversion from ‘int’ to ‘cv::AccessFlag’ [-fpermissive]
      return stdAllocator->allocate(dims0, sizes, type, data, step, flags, usageFlags);
      ^
      In file included from /usr/local/include/opencv4/opencv2/core.hpp:59:0,
      from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
      from /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.h:5,
      from /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:4:
      /usr/local/include/opencv4/opencv2/core/mat.hpp:472:23: note: initializing argument 6 of ‘virtual cv::UMatData* cv::MatAllocator::allocate(int, const int*, int, void*, size_t*, cv::AccessFlag, cv::UMatUsageFlags) const’
      virtual UMatData* allocate(int dims, const int* sizes, int type,
      ^~~~~~~~
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp: In member function ‘bool NumpyAllocator::allocate(cv::UMatData*, int, cv::UMatUsageFlags) const’:
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:146:65: error: invalid conversion from ‘int’ to ‘cv::AccessFlag’ [-fpermissive]
      return stdAllocator->allocate(u, accessFlags, usageFlags);
      ^
      In file included from /usr/local/include/opencv4/opencv2/core.hpp:59:0,
      from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
      from /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.h:5,
      from /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:4:
      /usr/local/include/opencv4/opencv2/core/mat.hpp:474:18: note: initializing argument 2 of ‘virtual bool cv::MatAllocator::allocate(cv::UMatData*, cv::AccessFlag, cv::UMatUsageFlags) const’
      virtual bool allocate(UMatData* data, AccessFlag accessflags, UMatUsageFlags usageFlags) const = 0;
      ^~~~~~~~
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp: At global scope:
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:167:16: error: cannot declare variable ‘g_numpyAllocator’ to be of abstract type ‘NumpyAllocator’
      NumpyAllocator g_numpyAllocator;
      ^~~~~~~~~~~~~~~~
      /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:96:7: note: because the following virtual functions are pure within ‘NumpyAllocator’:
      class NumpyAllocator : public MatAllocator
      ^~~~~~~~~~~~~~
      In file included from /usr/local/include/opencv4/opencv2/core.hpp:59:0,
      from /usr/local/include/opencv4/opencv2/core/core.hpp:48,
      from /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.h:5,
      from /home/pi/project/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/filters/cvfilter_py/conversion.cpp:4:
      /usr/local/include/opencv4/opencv2/core/mat.hpp:472:23: note: virtual cv::UMatData* cv::MatAllocator::allocate(int, const int*, int, void*, size_t*, cv::AccessFlag, cv::UMatUsageFlags) const
      virtual UMatData* allocate(int dims, const int* sizes, int type,
      ^~~~~~~~
      /usr/local/include/opencv4/opencv2/core/mat.hpp:474:18: note: virtual bool cv::MatAllocator::allocate(cv::UMatData*, cv::AccessFlag, cv::UMatUsageFlags) const
      virtual bool allocate(UMatData* data, AccessFlag accessflags, UMatUsageFlags usageFlags) const = 0;
      ^~~~~~~~

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.04.11 21:40 신고


        사용한 OpenCV 버전이 어떻게 되는 지요?

        OpenCV 4.0.1이 설치된 라즈베리파이에서 컴파일을 진행해서 확인해본 결과 에러가 난 원인이 mjpg-streamer와 OpenCV 4.x가 호환이 안되서 발생한 듯합니다.


        올려주신 에러와 다른데.. 다음처럼 OpenCV 4.x에서 제거된 OpenCV C API 관련해서 에러가 발생합니다.

        : error: ‘CV_IMWRITE_JPEG_QUALITY’ was not declared in this scope
        compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);


        OpenCV 3.x 버전을 사용해야 할 듯합니다.

    • YSJ 2019.04.12 00:43


      피드백 주셔서 감시합니다!!
      네 맞습니다 Open cv 4.0.1 사용하고 있고요
      말하신 오류 코드는 위에 댓글에 보니 CV_를 삭제하거나 CV::으로 만들면 오류가 사라져서 거기는 넘겼는데
      다음으로 발생한 오류코드가 저가 올린 에러가 발생합니다.
      일단 지금은 Open cv 4.0.1 삭제하고 3.4.4 또는 3.4.3으로 다시 깔고 진행해보려고 합니다.
      버전은 저 두개는 상관없이 아무거나 깔고 본문을 따라하면 되는건가요???

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.04.12 00:49 신고


        OpenCV가 3.x와 4.x로 분리되어 배포되는걸 보면 3.x와 4.x는 하위 호환성 문제(3.x코드가 4.x에서 에러나는)가 있지만 3.x 버전간에는 문제 없어보입니다.

    • YSJ 2019.04.12 01:04


      네 알겠습니다
      감사합니다!!!!!

    • YSJ 2019.04.12 01:18


      하나만 더 물어보겠습니다
      혹시 Open cv 4.0.1 어떻게 삭제할 수 있나요???
      라즈비안을 다시 깔아야 하나요???

    • YSJ 2019.04.12 01:27


      앗 그렇군요 알겠습니다 또 5시간 걸리겠네요 ㅠㅠ
      코맨트 감사합니다!!!

    • 김현중 2019.04.29 20:09


      해상도변경은 어떻게하나요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.04.29 20:52 신고


        -x 1280 -y 720 로 지정합니다..

        다음 두 링크에서 사용 예제를 확인하세요..

        https://github.com/jacksonliam/mjpg-streamer/blob/master/mjpg-streamer-experimental/plugins/input_raspicam/README.md

        https://github.com/jacksonliam/mjpg-streamer/blob/master/mjpg-streamer-experimental/plugins/input_uvc/README.md

    • 자동차 2019.05.16 17:59


      안녕하세요 제가 현재 라즈페리파이로 영상처리를 통한 라인트레이싱으로 자율주행자동차를 만들고 있는데요,

      현재 c코드로 모터 pid제어까지 하여서 이제 영상처리를 하려고 합니다.

      mjpg stramer 까지 사용은 하였는데 , 실시간으로 영상을 촬영하고 그 영상을 받아서 라인변환을 해서

      일정 값을 받아 그 수치만큼 방향, 속도 제어를 하려고하는게 목표인데

      하나의 c나 c++ 파일로 가능할까요?? 저는 현재 pid제어도 쓰레드분할해서 사용중인데 mjpg와 같은 실시간 스트리밍 영상도

      쓰레드 분할을 통해서 c나 c++로 구현이 가능 한지가 궁금합니다...

    • 자동차 2019.05.16 21:54


      이 글의 mjpg streaming 을 사용할때 터미널에서 mjpg_streamer 명령을 사용하였는데

      이 명령을 c 언어로 표현하는 명령어가 있을까요?

      • 자동차 2019.05.16 22:19


        혹시 도입부에서 참고하셨다는 페이지에서 나와있는 깃허브에 mjpg_steamer experimental 파일이 있던데 그걸로 구현이 가능한건지 궁금합니다..

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.16 22:25 신고


        OpenCV를 사용하면 됩니다. 아래 포스트를 참고하세요..

        mjpg-streamer를 사용한 웹 스트리밍을 OpenCV에서 가져오기
        https://webnautes.tistory.com/1262

      • 자동차 2019.05.16 22:45


        답변주셔서 감사합니다 .

        제가 궁금한것은 비디오 객체에 웹 스트리밍 주소를 입력 해야 하는데,
        그러려면 터미널창에서 계속해서 데이터를 전송 하지 않습니까?

        그럼 이제 다른걸 프로세싱을 할 수 없으니.. 저는 하나의 빌딩으로 실시간 스트리밍데이터를 보냄과 동시에 자동차제어를 하는걸 원합니다

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.16 23:33 신고


        쓰레드로 구현하면 해결됩니다...

        제어할때 사용하는 바이트수가 적기때문에..

        비디오 프레임이 연속적으로 들어와도 문제가 되지는 않습니다...

      • 자동차 2019.05.17 14:14


        답변 감사합니다 ㅎㅎ

        좀 더 공부하다 궁금한 점이 있으면

        여쭤 보아도 되련지요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.17 14:19 신고


        네.. 괜찮습니다.

    • KJH 2019.05.25 19:22


      안녕하세요 덕분에 많은 도움이 되었는데요
      혹시 라즈베리파이에 파이캠과 웹캠을 한 대의 라즈베리파이에 연결하여 두 화면 모두 스트리밍 하는 방법이 있을까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.25 23:21 신고


        아래 링크에 하는 방법을 소개하고 있습니다.
        확인해보지는 못했습니다.

        https://community.octoprint.org/t/wip-multiple-webcam-streams-in-control-multicam/1660/42

    • 장형필 2019.06.14 01:48


      안녕하세요. 포스팅 하신게 도움이 많이 됬습니다.
      스트리밍하는 영상을 제가 만든 안드로이드앱에서 웹뷰로 연결하고 싶은데
      안드로이드 스튜디오로 만들어 놓은 웹뷰에 url을 -> 라즈베리파이_아이피주소:8090/?action=stream 이렇게 입력하니까 실시간 영상이 뜨지않는데 어떻게 해야될까요..? 참고로 라즈베리파이와 안드로이드폰은 같은 wifi환경입니다. (에뮬레이터와 안드로이드공기계 둘다 하려고합니다.)
      도움을 주신다면 감사하겠습니다!!

    • 첫시작. 2019.06.17 19:57


      라즈베리파이 B 모델과 카메라 모듈을 사용중입니다.

      잘 따라하다가

      라즈베리파이IP:8090 를 넣었는데 접속이 안되네요...

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.06.17 21:18 신고


        혹시 카메라 동작 여부를 확인해봤나요?

        확인을 안해봤다면 아래 링크 보고 카메라 모듈이 동작하는지 테스트해보세요..
        https://webnautes.tistory.com/1192

        동작여부를 확인했다면 어떤 에러 메시지가 보이는지 알려주세요.

      • 첫시작. 2019.06.17 21:49


        한번 작동시켰다가 취소하니 동작을 안하는 거였네요 reboot 하니 다시 됩니다!

        또한 화면 해상도나 프레임은 어떻게 조정하나요 ?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.06.17 23:55 신고


        해상도는 조정이 가능한 걸로 기억합니다.

        자세한 옵션은 다음 명령으로 확인하세요.


        pi@raspberrypi:~ $ mjpg_streamer -i 'input_raspicam.so --help'
        pi@raspberrypi:~ $ mjpg_streamer -i 'input_uvc.so --help'

    • yoon 2019.07.10 18:25


      안녕하세요, 라즈베리 웹브라우저와 노트북 pc에서 라즈베리ip:8090으로 들어가면 영상은 잘 스트리밍 되고 있습니다!
      제가 졸업작품으로 aws ec2 가상 클라우드(ubuntu)에서 딥러닝을 하고 있습니다. 이 "라즈베리ip:8090"에서 스트리밍 되는 영상으로 학습시킨 모델을 실행시키려고 하는데, 가상환경 웹브라우저에서는 영상에 접속이 안되더라고요 ㅜㅠ 아래 질문들 보니, 같은네트워크를 사용해야 접근이 가능하다고 하는데, 노트북에서 aws를 돌리고 있는 상황이라 같은 네트워크를 공유? 하고 있는거 아닌가요 ㅠㅠ
      aws에서도 이 영상을 받아올 수 있는 방법에 대해 조언좀 구할 수 있을까요? 그리고 정리 잘 해주셔서 감사합니다!!

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.07.10 18:42 신고


        검색해보니 VPC를 사용하면 될듯한데.. 해본 부분이 아니라서 정확한 답변은 어려울 듯합니다.

        아래 링크를 참고하세요.

        https://varian-lee.github.io/vpc/

    • Favicon of https://rkdghgyun.tistory.com BlogIcon 강호균 2019.08.09 11:31 신고


      안녕하세요! 정말 많은 도움을 받고 있어 항상 감사드립니다!
      다름이 아니라 제가 지금 openCV 4.1.0 버전을 사용하고있는데 3버전으로 어떻게 다운그레이드 하나요?
      저는 영상을 cloud server에 전송을 하려 합니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.08.09 13:31 신고


        다음 명령을 사용하면 opencv 파일들을 제거해줍니다.

        sudo find /usr/local/ -name "*opencv*" -exec rm {} \;

        이후 재설치하면 됩니다.



    • 그린아버 2019.10.29 22:02


      pi@raspberrypi:~/project/mjpg-streamer/mjpg-streamer-experimental $ make CMAKE_BUILD_TYPE=Debug
      단계에서 오류가 뜹니다..

      [ 31%] Building CXX object plugins/input_opencv/CMakeFiles/input_opencv.dir/input_opencv.cpp.o
      /home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp:86:5: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
      " Help for input plugin..: "INPUT_PLUGIN_NAME"\n" \
      ^
      /home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp: In function ‘void* worker_thread(void*)’:
      /home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp:408:34: error: ‘CV_IMWRITE_JPEG_QUALITY’ was not declared in this scope
      compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
      ^~~~~~~~~~~~~~~~~~~~~~~
      /home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp:408:34: note: suggested alternative: ‘IN_CMD_JPEG_QUALITY’
      compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
      ^~~~~~~~~~~~~~~~~~~~~~~
      IN_CMD_JPEG_QUALITY
      make[3]: *** [plugins/input_opencv/CMakeFiles/input_opencv.dir/build.make:63: plugins/input_opencv/CMakeFiles/input_opencv.dir/input_opencv.cpp.o] Error 1
      make[3]: Leaving directory '/home/pi/mjpg-streamer/mjpg-streamer-experimental/_build'
      make[2]: *** [CMakeFiles/Makefile2:243: plugins/input_opencv/CMakeFiles/input_opencv.dir/all] Error 2
      make[2]: Leaving directory '/home/pi/mjpg-streamer/mjpg-streamer-experimental/_build'
      make[1]: *** [Makefile:130: all] Error 2
      make[1]: Leaving directory '/home/pi/mjpg-streamer/mjpg-streamer-experimental/_build'
      make: *** [Makefile:19: all] Error 2


      뭐가문제일까요;; 우선 블로거님 다른 포스터로 opencv까지설치했습니다

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.29 23:00 신고


        OpenCV 4.x에서 C-API가 제거되어 발생한 문제로 보입니다.

        /home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp 파일의 408번째 줄에 있는
        CV_IMWRITE_JPEG_QUALITY를 cv::IMWRITE_JPEG_QUALITY로 수정해보세요.


        검색해서 찾은 해결방법이라 한번에 해결안될 수도 있습니다.

        참고한곳
        https://github.com/jacksonliam/mjpg-streamer/issues/160

    • michael 2019.11.07 18:14


      잘 보고있습니다. 운영자님.
      혹시 OpenCV로 촬영되고 있는 카메라를 이 스트리밍 방식으로 스트리밍도 할 순 없을까요?
      시도는 해봤는데 device or resource busy라고 안되긴 합니다만..

    • 2019.11.09 15:58


      비밀댓글입니다

    • motrue seok 2020.01.10 06:49


      감사히 잘 배우고 있습니다. 언뜻 생각이 나서 질문을 드립니다. 스트리밍 되고 있는 영상을 저장하는 방법이 혹 있을까요? 외장하드를 이용해서 dvr처럼 주욱 저장한다던지.. 아니면 시간을 정해주고 그 시간만 몇분정도 저장하는 방법 등...
      감사합니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.01.10 08:29 신고


        ffmpeg같은 라이브러리를 써야 겠지만..

        OpenCV에서 가져와 저장하는 건 어떨까 싶습니다.

        https://webnautes.tistory.com/1262

Designed by Tistory.