라즈베리파이에 연결된 카메라로부터 캡쳐된 영상을 웹브라우저에서 볼 수 있도록 mjpg-streamer를 사용하는 방법을 설명하고 있습니다.
다음 블로그 글을 참고하여 진행했습니다.
https://desertbot.io/blog/how-to-stream-the-picamera
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-pil python3-pil libjpeg-dev build-essential
6. OpenCV 4를 사용할 경우 컴파일시 에러가 나기 때문에 소스코드를 수정해야 합니다.
OpenCV 3을 사용한다면 다음 단계로 넘어가세요.
nano 편집기로 파일을 열은 후,
pi@raspberrypi:~/project $ nano mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp
CTRL + _를 누르고 408 엔터를 눌러 408번째 줄로 이동합니다.
다음처럼 수정합니다.
수정 전
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
수정 후
compression_params.push_back(cv::IMWRITE_JPEG_QUALITY);
Ctrl + O를 눌러 저장하고
Ctrl + X를 눌러 편집기에서 빠져나옵니다.
7. 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:~ $
8. /dev/video0에 연결된 웹캠으로부터 캡처한 영상을 HTTP 포트 8090으로 스트리밍하도록 합니다.
pi@raspberrypi:~ $ mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www/"
9. 라즈베리파이 카메라를 사용할 경우에는 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'
10. 카메라로부터 영상을 캡쳐하여 웹으로 전송되는 상황을 볼 수 있습니다.
11. PC의 웹브라우저로 라즈베리파이_아이피주소:8090에 접속합니다.
12. 왼쪽 메뉴에서 Static을 선택할 때 마다 스냅사진이 새로 갱신됩니다.
13. 왼쪽 메뉴에서 Stream을 선택하면 실시간 영상을 볼 수 있습니다.
14. 웹문서없이 이미지만 받고 싶다면 다음 주소를 사용하면 됩니다.
스냅사진 - 라즈베리파이_아이피주소:8090/?action=snapshot
실시간 영상 - 라즈베리파이_아이피주소:8090/?action=stream
코드로 접근하기 위해서는 OpenCV를 사용하면 됩니다. 아래 포스트를 참고하세요..
mjpg-streamer를 사용한 웹 스트리밍을 OpenCV에서 가져오기
https://webnautes.tistory.com/1262
최초 작성. 2018. 10. 28
최종 작성. 2020. 5. 18
'Raspberry Pi > Raspberry Pi 활용' 카테고리의 다른 글
TCP 소켓 통신으로 Raspberry Pi에서 Arduino UNO에 연결된 LED 제어하기 (4) | 2019.01.16 |
---|---|
mjpg-streamer를 사용한 웹 스트리밍을 OpenCV에서 가져오기 (17) | 2018.10.30 |
Raspberry PI 2 /3 와 Arduino를 연결하여 SPI 테스트 (10) | 2016.11.29 |
Raspberry Pi 2/3에서 SPI 사용하기 (7) | 2016.11.29 |
Raspberry PI 2 /3 와 atmega128를 연결하여 SPI 테스트 (문자열 전송) (9) | 2016.06.29 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!