V4L2는 카메라 입력을 받기 위한 표준 인터페이스이다. 이번에는 이녀석을 이용해서 동영상 스트리밍을 해보자.
$ sudo apt-get update
$ sudo apt-get upgrade
update만 해 주었다.
$ sudo apt-get install v4l-utils
$ sudo modprobe bcm2835-v4l2 (일회성 실행인듯)
필요한 유틸을 설치(기본적으로 설치는 되어 있는듯 하다)하고 모듈을 실행한다.
이미 설치 되어 있을 수도 있다.
제대로 설정 되었는지 확인해 보자.
계속해서 bcm2835-v4l2를 사용하겠다면 modules에 등록을 해 놓아야 한다.
계속해서 bcm2835-v4l2를 사용하겠다면 modules에 등록을 해 놓아야 한다.
$ sudo nano /etc/modules
-> bcm2835-v4l2 추가해 준다.
-> bcm2835-v4l2 추가해 준다.
이제 RTSP 서버를 다운받아서 설치해야 한다.
$ sudo git clone https://github.com/mpromonet/h264_v4l2_rtspserver.git
*git가 설치 되어 있지 않다면 먼저 git를 설치해 줘야 한다. 검색해서 참조할것.
$ sudo apt-get install liblivemedia-dev libv4l-dev cmake libasound2-dev
*git가 설치 되어 있지 않다면 먼저 git를 설치해 줘야 한다. 검색해서 참조할것.
$ sudo apt-get install liblivemedia-dev libv4l-dev cmake libasound2-dev
의존성에 필요한 것들(3개)을 추가로 미리 설치해 준다. libasound2-dev 라이브러리를 추가해 주었다. 이것 때문에 에러가 생긴듯 하다.
$ cd h264_v4l2_rtspserver
위에서 다운로드 했던 V4L2-rtspserver 디렉토리로 들어간다.
$ sudo cmake . (끝에 점을 빼 먹지 말자.)
$sudo make
이제 모든 설치가 완료 되었다. 이제 서버를 실행하면 된다.
지금 작업했던 디렉토리에서 실행되어야 한다. 나중에 다시 실행하더라도 이곳으로 이동하거나 경로를 적어 줘야 한다.
$sudo make
이제 모든 설치가 완료 되었다. 이제 서버를 실행하면 된다.
지금 작업했던 디렉토리에서 실행되어야 한다. 나중에 다시 실행하더라도 이곳으로 이동하거나 경로를 적어 줘야 한다.
pi@raspberrypi:~/h264_v4l2_rtspserver $ sudo ./h264_v4l2_rtspserver -F 25 -W 1280 -H 720 -P 8555 /dev/video0
이제 클라이언트 RTSP 지원 플레이어에서 주소를 열어 접속한다. PC에서 다음팟플레이어를 실행하고 주소열기 창을 열어서 아래 주소를 입력해 준다.
이제 클라이언트 RTSP 지원 플레이어에서 주소를 열어 접속한다. PC에서 다음팟플레이어를 실행하고 주소열기 창을 열어서 아래 주소를 입력해 준다.
rtsp://raspberrypi-ip:8555/unicast
로 접속하면 영상을 확인 할 수 있다.
RTSP Player 라는 안드로이드 어플로도 접속해 보니 정상적으로 잘 나온다.
- Live555보다 딜레이가 짧고 안정적인듯 하다.
- 하지만 GStreamer보다는 딜레이가 길다.
- 영상을 flip하는 하는 옵션은 뭣인가?
- 안드로이드에서도 딜레이가 더 있지만 Live555 처럼 끊기거나 중단되는 현상은 없는것 같다.
- 또 다른 RTSP 서버를 찾아 봐야 하나? GStreamer가 제일 나은듯 보인다.
- 하지만 GStreamer보다는 딜레이가 길다.
- 영상을 flip하는 하는 옵션은 뭣인가?
- 안드로이드에서도 딜레이가 더 있지만 Live555 처럼 끊기거나 중단되는 현상은 없는것 같다.
- 또 다른 RTSP 서버를 찾아 봐야 하나? GStreamer가 제일 나은듯 보인다.
*참고
V4L2를 사용하려고 보니 카메라가 뒤접혀 있어서 영상이 또 상하좌우 바껴 있다. 이걸 어떻게 정상으로 뒤집어야 하나 찾아 봐도 정보를 찾기 쉽지 않다. 방법은 v4l2-ctl --set-ctrl 옵션지정 방식으로 다양한 영상 효과를 줄 수 있다. 자세한 목록은 파일로 첨부 하였다.
$ v4l2-ctl --set-ctrl horizontal_flip=1 (수평으로 영상을 반전 시켜 준다. 기본값은 0 이다.)
$ v4l2-ctl --set-ctrl vertical_flip=1
$ v4l2-ctl --set-ctrl vertical_flip=1