top drop menu

Recent Post

목요일, 8월 11

라즈베리파이에서 V4L2 - RTSP 서버로 비디오 스트리밍하기

Live555를 사용하여 비디오 스트리밍을 해 봤지만 결과가 신통찮았다. 그래서 다른 솔루션을 찾아 보니 다른게 또 있다. 음~ 이것도 하번 해보자. 언제까지? 제대로 될때까지... 왜 이걸 할려고 하는지 깜빡 할때가 있기는 하지만.
V4L2는 카메라 입력을 받기 위한 표준 인터페이스이다. 이번에는 이녀석을 이용해서 동영상 스트리밍을 해보자.

$ sudo apt-get update
$ sudo apt-get upgrade

update만 해 주었다.

$ sudo apt-get install v4l-utils
$ sudo modprobe bcm2835-v4l2 (일회성 실행인듯)

필요한 유틸을 설치(기본적으로 설치는 되어 있는듯 하다)하고 모듈을 실행한다.
이미 설치 되어 있을 수도 있다.


제대로 설정 되었는지 확인해 보자.
계속해서 bcm2835-v4l2를 사용하겠다면 modules에 등록을 해 놓아야 한다.

$ sudo nano /etc/modules
-> 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

의존성에 필요한 것들(3개)을 추가로 미리 설치해 준다. libasound2-dev 라이브러리를 추가해 주었다. 이것 때문에 에러가 생긴듯 하다.

$ cd h264_v4l2_rtspserver

위에서 다운로드 했던 V4L2-rtspserver 디렉토리로 들어간다.

$ sudo cmake . (끝에 점을 빼 먹지 말자.)
$sudo make
이제 모든 설치가 완료 되었다. 이제 서버를 실행하면 된다.
지금 작업했던 디렉토리에서 실행되어야 한다. 나중에 다시 실행하더라도 이곳으로 이동하거나 경로를 적어 줘야 한다.

pi@raspberrypi:~/h264_v4l2_rtspserver $  sudo ./h264_v4l2_rtspserver -F 25 -W 1280 -H 720 -P 8555 /dev/video0
이제 클라이언트 RTSP 지원 플레이어에서 주소를 열어 접속한다. PC에서 다음팟플레이어를 실행하고 주소열기 창을 열어서 아래 주소를 입력해 준다.


rtsp://raspberrypi-ip:8555/unicast

로 접속하면 영상을 확인 할 수 있다.



RTSP Player 라는 안드로이드 어플로도 접속해 보니 정상적으로 잘 나온다.



- Live555보다 딜레이가 짧고 안정적인듯 하다.
- 하지만 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





Blogger Widget