SPRING :: NOTE
[GStreamer] RTSP Server 구축(gst-rtsp-server) 본문
일단 필자는 라즈베리파이 및 카메라를 아무것도 모르는 사람이다.
누가 시켜서 일을 할 뿐...
아무것도 모르는 상태에서 구글링x100을 이용해서 여러 RTSP Server 구축을 해봤다.
라즈베리파이 카메라를 이용하는것도 아니고, 자체 개발 된 v4l2 카메라(사실 v4l2 정확한 개념도 모른다.)를 이용해서 애를 많이 먹고 이것저것 구축해봤다.
아마 블로그 글 목록 보면 여러가지 문제점에 봉착해 기록용으로 써놓은 블로깅이 많을것이다.
겁먹지 말고 차근차근 따라하다보면 성공할것으로 보인다.
원본 글 및 링크(참고사이트) :
이 글은 raspberry pi에서 RTSP 서비스를 실행하는 빠른 안내서이므로 원격 컴퓨터의 vlc 또는 gstreamer와 같은 클라이언트를 사용하여 Rasberry pi 카메라 영상을 볼 수 있다.
이를 위해 아무것도 설치되어있지 않은 상태의 라즈베리파이 이미지로 시작한다.
이 글에서 사용한 라즈베리파이는 2017-03-02-raspbian-jessie-lite를 사용했다.
아래는 이 글을 작성하기 위해 찾은 원본 링크.
https://www.stev.org/post/raspberrypisimplertspserver
1. RTSP 구축을 위한 라즈베리파이 자체 설정
$ sudo raspi-config
Enable ssh
Enable camera
$ Increase memory split to 256MB
$ sudo apt-get update
$ sudo apt-get dist-upgrade // 업그레이드 시, 펌웨어를 건들 수 있으니 주의!
$ sudo reboot
- raspi-config에 들어가서 카메라 활성화 및 메모리 스플릿를 진행한다.
- 수정된 라즈베리파이의 설정을 적용하기 위해 update 및 리부트
2. Package Install
$ sudo apt-get install vim git
$ sudo apt-get install gstreamer1.0-plugins-bad
gstreamer1.0-plugins-base gstreamer1.0-plugins-good
gstreamer1.0-plugins-ugly gstreamer1.0-tools libgstreamer1.0-dev
libgstreamer1.0-0-dbg libgstreamer1.0-0 gstreamer1.0-omx
gstreamer1.0-omx-dbg libgstreamer-plugins-base1.0-dev gtk-doc-tools
git이 설치되어있으면, git 인스톨은 제외해도 된다.
3. GStreamer Camera Source
gstreamer 파이프 라인에서 카메라를 액세스 할 수 있도록 gstreamer rpi 카메라 소스를 빌드해야한다.
이 작업을 수행하기 위해 / home/pi/src에서 이 명령을 실행했다.
이 작업은 gstreamer에 포함되어 있지 않으며 apt-get으로 설치할 수 없으므로,
git clone을 이용하여 git Project를 다운받아 cmake로 빌드한다.
* 주의 :
Rasberry Pi 전용 카메라를 사용하지 않을 시, 이 단계는 건너뛰어도 상관없다.
이 설치는, raspicam을 이용하기 위하여 Gstreamer를 설치하는 단계다.(리눅스를 아무것도 모르는 내 생각엔...)
필자는 전용 카메라를 사용하지 않았으며, 회사에서 개발된 v4l2src를 이용하였다.
$ git clone https://github.com/thaytan/gst-rpicamsrc.git
$ cd gst-rpicamsrc
$ ./autogen.sh
$ make
$ sudo make install
./autogen.sh 실행 시, 오류가 날 수 있다.
Error :
configure: error:
You need to install or upgrade the GStreamer development
packages on your system. On debian-based systems these are
libgstreamer1.0-dev and libgstreamer-plugins-base1.0-dev.
on RPM-based systems gstreamer1.0-devel, libgstreamer1.0-devel
or similar. The minimum version required is 1.0.0.
configure failed
해결 후 다시 ./autogen.sh 부터 설치를 진행하면 된다.
설치가 완료 되면 아래 커맨드를 통해 플러그인이 정상적으로 설치되었는지 테스트 할 수 있다.
gst-inspect-1.0 | grep rpicamsrc
또한, 아래 커맨드를 실행시켜 카메라 제어를 지원할 수있는 광범위한 속성 목록을 확인할 수 있어야 한다.
gst-inspect rpicamsrc
여기까지 설치가 완료 되면, 카메라가 작동하는지 확인하기 위해 비디오 테스트를 할 수 있다.
gst-launch-1.0을 이용하면 카메라 영상 및 이미지를 확인하고 데이터를 "덤프"하는 gstreamer 파이프 라인을 실행할 수 있다.
아래 커맨드를 사용하여, 실행해보자.
gst-launch-1.0 -v rpicamsrc keyframe-interval = 30! fakesink silent = false
* 주의 :
이 테스트는, 라즈베리파이 GUI를 이용하여 작업하는분을 위한 커맨드이며, 콘솔을 이용하여 단순 카메라를 띄운다.
SSH 및 Serial을 이용하는분은 카메라가 뜨지 않는다.(당연...)
4. GStreamer RTSP Server Install
라즈비안의 gstreamer 버전이 너무 오래 되었기 때문에 새로 개발된 gstreamer rtsp Serer는 함께 제공되지 않는다.
이를 위해 올바른 버전을 선택하여 컴파일하고 설치해야한다.
본 GStreamer RTSP Server는 git hub의 https://cgit.freedesktop.org/gstreamer/gst-rtsp-server/ 를 이용하였다.
다른 블로거님이 쓰신 글을 보면
1.4 버전이 안정적이라 1.4를 이용하였다고 하는데 나는 리눅스를 잘 몰라서 모르겠다.
$ git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server
$ cd gst-rtsp-server
$ git checkout 1.4
$ ./autogen.sh
$ make
$ sudo make install
./autogen.sh 실행 시, 오류가 날 수 있다.
configure: error: You need to have gtk-doc >= 1.12 installed to build GStreamer RTSP Server Library
configure failed
Error :
해결 후 다시 ./autogen.sh 부터 설치를 진행하면 된다.
5. RTSP Server Start
이제 설치 된 gst-rtsp-server의 test 코드를 사용하여 GStreamer RTSP Server를 구동할 수 있게 되었다.
아래 위치로 이동하면 이 글을 따라하는 분의 환경에 맞게 test를 할 수 있는 예제코드들이 많이 있다.
$ cd /gst-rtsp-server/examples
프로그램 목록을 보게되면($ ls -l) 이것저것 테스트를 해볼 수 있다.
나는 여기서 제일 처음 test-video를 이용하여 정상적으로 스트리밍 되는지 테스트하였다.
스트리밍 정상 테스트 :
$ ./test-video
그럼 위와 같이 스트리밍 준비가 되었다는 메시지와 함께 127.0.0.1:8554/test 라는 URL이 생성된다.
연결되있는 Client에서 저 주소로 접속하게 되면 확인할 수있다.
Client에서 연결 할 때, 아래와 같은 주소로 접속하면 된다.
필자는 VLC를 이용하였다.
rtsp://[your rasberryPi IP Address]
정상적으로 스트리밍이 가능하다.
이제 연결된 USB를 이용할 차례다.
이 부분을 내가 몇번을 치고 구글링 해봤는지... 엄청난 삽질을 통해서 스트리밍을 진행했다.
일단 기본적인 raspicamsrc를 이용한 방법.
./test-launch "( rpicamsrc preview=false bitrate=2000000 keyframe-interval=15 ! video/x-h264, framerate=15/1 ! h264parse ! rtph264pay name=pay0 pt=96 )"
그러나 나는 이 방법으로 안된다. (필자는 v4l2src를 사용.)
./test-launch "(v4l2src device=/dev/video0 ! videoconvert ! queue ! x264enc ! video/x-h264,alignment=au,stream-format=byte-stream,profile=main ! h264parse ! mpegtsmux name=muxer ! tsparse ! rtpmp2tpay name=pay0 pt=96 )"
스크립트를 실행하면, 아까와 동일한 스트림 시작 메시지가 나오며,
동일하게 VLC로 실행한 결과 스트리밍이 정상적인것을 확인.
캡쳐를 못떠 이미지 삽입은 못함.
Error :
** (GStreamer_FirstApp.exe:1836):
WARNING **: failed to create element 'rtpbin', check your installation
https://stackoverflow.com/questions/30911127/failed-to-create-element-rtpbin
위 문제는 그냥, gst-launch-1.0 --version 해봐서 커맨드가 안먹히면, GStreamer 자체를 다시 설치하면 된다.
### 2020년 2월 27일 업데이트
'Development Tools > Linux' 카테고리의 다른 글
[WINDOWS] Win32 Disk Imager Disk Error (1) | 2019.11.11 |
---|---|
[Raspberry Pi] error set_fmt gave us a different result then try_fmt! (0) | 2019.09.07 |
[GStreamer] gst-rtsp-server 설치 중 오류 (0) | 2019.09.06 |
[GStreamer] 카메라 소스 설치 중 오류발생 시 해결방법 (0) | 2019.09.06 |
[Raspberry Pi] raspivid 명령어 오류났을 때, (카메라) (0) | 2019.09.06 |