이번시간에 라즈베리파이 카메라로 동영상을 스트리밍 하는 방법에 대해 알아보겠습니다.
라즈베리파이의 스트리밍 기술스택을 알아보면서 motion, G-streamer, mjpg-streamer 등 많은 방법들이 있음을 알게되었습니다.
이 중에서 mjpg-streamer라는 패키지를 이용해서 동영상을 스트리밍 해보겠습니다.
일단 패키지 설치 전 다음 두 명령어로 패키지를 업데이트/업그레이드 해줍니다.
sudo apt-get update
sudo apt-get upgrade
스트리밍 패키지를 깃허브에서 클론 해 와야하기 때문에 저장할 폴더를 만들어주고 이동한 뒤 패키지를 클론합니다.
mkdir ./mjpg
cd mjpg/
git clone https://github.com/jacksonliam/mjpg-streamer.git
다운이 완료 됐으면 받은 폴더의 mjpg-streamer/mjpg-streamer-experimental/로 이동합니다.
cd mjpg-streamer/
cd mjpg-streamer-experimental/
아래 명령어를 입력하여 컴파일 및 설치를 해줍니다.
sudo apt-get install cmake
이제 mjpg-streamer에 필요한 패키지를 설치하는데, 이부분은 다른분들의 참고를 했는데 될 때도 있고 안될 때도 있는 것 같습니다. 나중에 확인해도 문제가 없었기 때문에 일단 명령어를 입력해봅니다.
sudo apt-get install python-imaging (저는 이 패키지 설치에서 에러났지만 결과에 영향이 없었습니다.)
sudo apt-get install libjpeg-dev
이제 컴파일 해줍니다.
make CMAKE_BUILD_TYPE=Debug
완료되었습니다. 컴파일이 정상 완료되었으니 이제 mjpg-streamer를 설치합니다.
sudo make install
패키지 설치는 모두 끝났고 이제 홈 디렉토리로 돌아와 쉘 편집기를 열어줍니다.
cd ~
sudo nano mjpg.sh
적혀있는 코드를 아래와 같이 수정합니다. 포트는 사용하지않는 8091를 사용했습니다.
fps 는 디폴트로 5가 설정되어있는데 너무 끊기기 때문에 10정도로 맞춰줬고(전 나중에 15로 바꿔줬어요) -vf옵션으로 상하 반전으로 맞췄습니다.
fps를 높이고 -x,-y 가로세로 폭을 줄여주니깐 화질이 비교적 매끄럽게 나오더라구요.
명령어 옵션은 아래 그림을 참고해주세여
이제 아래 명령어로 스트리밍을 실행해봅니다.
sh mjpg.sh
명령어를 입력하면 아래와 같은 화면이 뜨면서 스트리밍 서버가 실행중임을 알 수 있습니다.
이제 웹에서 ip주소:8091(아까 지정한 포트넘버)를 입력해보겠습니다. 아래화면이 떠야 정상입니다.
왼쪽 배너에서 stream을 클릭해주면 실시간 스트리밍 화면을 볼 수 있습니다.!!
15fps로 맞춰놨는데 엄청 부드럽진 않습니다. 카메라 사양 차이도 있을 것 같네요.
스트리밍을 중단하고 싶으면 아까 스트리밍을 실행시켰던 cmd창에 ctrl+Z를 입력하면 됩니다.
바로 스트리밍을 동작 시키면 프로세스 간 충돌이 일어날 수 있어서 에러가 납니다.
cmd창에 ps명령어로 지금 돌아가고있는 프로세스 목록을 확인하고
아래 명령어로 아직 종료되지 않은 1649 PID를 종료합니다.
kill -9 1649
이제 다시 확인해보면 지워졋죠?
아닙니다.(defunct는 좀비프로세스로 아직 완전히 종료되지않고 떠돌고 있는 상태의 프로세스입니다.)
mjpg-streamer 프로세스를 종료시키는게 아니라 sh 프로세스(1648번)를 종료해야합니다.
kill -9 1648
sh프로세스와 mjpg_streamer 프로세스가 같이 종료되었습니다.
이제 다시 쉘 명령어로 스트리밍을 시작할 수 있습니다.
참고로 아까 웹사이트에 ip, 포트넘버를 입력하면 어떤 창이 하나 떴잖아요?
이거를 안띄우고 바로 스트리밍 화면을 보고싶다면 웹 주소에 ip주소:포트넘버/?action=stream 꼴로 작성하면됩니다.
ex) 162.178.31.2:8091/?action=stream
엔터치면 바로 스트리밍 화면이 뜨는 걸 확인할 수 있습니다.
다시 ps -> kill 명령어로 프로세스를 종료하여 사용을 마치도록합니다.
이상입니다!
'라즈베리파이' 카테고리의 다른 글
라즈베리파이 opencv 카메라 사용 관련 오류 + 해결 (2) | 2021.05.04 |
---|---|
라즈베리파이 카메라로 동영상 스트리밍 하기(UV4L) (2) | 2021.04.29 |
라즈베리파이카메라로 사진 찍고 파이어베이스 storage에 저장하기 (8) | 2021.04.14 |
라즈베리파이의 웹서버를 데스크탑에서 접근하기 (0) | 2021.04.07 |
라즈베리파이와 PC간 파일 전송을 위한 SAMBA설치 (0) | 2021.03.02 |