라즈베리파이4 카메라 실시간 - lajeubelipai4 kamela silsigan

행복한 하루

안녕하세요.

  라즈베리파이에 카메라를 장착해서 다른 사람들에게 스트리밍 하려면 몇 가지 방법이 있는데, 그중 한 가지가 RTSP라는 프로토콜로 스트리밍 하는 것입니다. 이전에 MJPEG로 웹상 스트리밍 하는 것도 해보았지만, 품질과 제어 관점에서는 좋지 못했습니다. 그래서 향후 영상을 스트리밍 하기 위해서 테스트로 설치해보았습니다.


1. RTSP 프로토콜이란?

  실시간 스트리밍 프로토콜(Real Time Streaming Protocol, RTSP)은 스트리밍 미디어 서버를 제어할 목적으로 엔터테인먼트, 통신 시스템에 사용하도록 설계된 네트워크 제어 프로토콜이다. 이 프로토콜은 종단점(end point)들 간에 미디어 세션을 확립하고 제어하기 위해 사용된다. 미디어 서버의 클라이언트들은 play, record, pause 등 VHS 스타일의 명령을 발행하여 서버→클라이언트(주문형 비디오/VOD) 또는 클라이언트→서버(녹음)의 실시간 미디어 스트리밍 제어를 용이하게 만들어준다.

  스트리밍 데이터 전송 그 자체는 RTSP의 역할이 아니다. 대부분의 RTSP 서버들은 미디어 스트림 전달을 위해 RTCP와 결합한 실시간 전송 프로토콜(RTP)을 사용한다. 그러나 일부 벤더들은 사유 전송 프로토콜을 구현해놓고 있다. 예를 들어 리얼네트웍스의 RTSP 서버 소프트웨어는 리얼네트웍스의 사유 리얼 데이터 트랜스포트(RDT)를 사용하였다.

  RTSP는 리얼네트웍스, 넷스케이프[1], 컬럼비아 대학교에 의해 개발되었으며 최초 초안은 1996년 IETF에 제출되었다. [2] IETF의 MMUSIC WG(Multiparty Multimedia Session Control Working Group)에 의해 표준화되었으며 1998년 "RFC 2326"으로 출판되었다.[3] RTSP 1.0을 대체하는 RTSP 2.0이 "RFC 7826"의 이름으로 2016년 출판되었으나 이 버전은 기본 버전 협상(negotiation) 메커니즘 외에는 하위 호환이 되지 않는다.

<wiki – rtsp 프로토콜>

라즈베리파이4 카메라 실시간 - lajeubelipai4 kamela silsigan

<RSTP 명령어 흐름도>

2. RTSP 서버 설치

1) 먼저 현재 상태를 업데이트합니다.

$ sudo apt-get update
$ sudo apt-get upgrade   #커널 등 업데이트가 될 수 있으므로 주의 및 백업 필요

2) 완료 후 필요 유틸리티 설치

$ sudo apt-get install v4l-utils
$ sudo apt-get install bcm2835-v4l2

3) vim 혹은 nano 에디터로 모듈 추가

$ sudo vim /etc/modules
...
bcm2835-v4l2
...

4) RTSP Server를 설치하기 위해 소스 다운로드

$ sudo apt-get install git-core
$ sudo git clone https://github.com/jjzhang166/h264_v4l2_rtspserver.git

5) RTSP Server 필요한 라이브러리 설치

$ sudo apt-get install liblivemedia-dev libv4l-dev cmake libasound2-dev

6) 소스 컴파일 

$ cd h264_v4l2_rtspserver
$ sudo cmake .   # "." 확인
$ sudo make

7) OpenSSL 관련해서 설치와 에러 발생 경우

  - OpenSSL 경우 수동으로 설치해야 하며, 그래서 스크립트를 만들어서 자동처럼 설치되게 합니다.

  - 설치 경로는 임의의 디렉터리를 만들어서 (예, ~/opt/에 스크립트를 실행시켜 rtsp server와 다른 곳에 설치를 합니다.

$ vim install-openssl.sh

OPENSSL_VER=1.1.0g
mkdir openssl
cd openssl
wget https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz
tar xf openssl-${OPENSSL_VER}.tar.gz
cd openssl-${OPENSSL_VER}
./config zlib shared no-ssl3
make -j4
sudo make install
$ sh install-openssl.sh

 - "glob" is not exported by the File::Glob module 에러가 발생할 경우
OpenSSL 버전을 OpenSSL 1.1.0h 로 변경한 후 재 설치하면 실행됩니다. (버그 수정됨)

8) 실  행

  - 홈 디렉터리(~)로 이동하여 서버를 실행 프레임과, 화면 사이즈 등을 설정하여 서버에서 스트리밍 실행합니다. 

$ sudo ./h264_v4l2_rtspserver/v4l2rtspserver -F 25 -W 1280 -H 720 -P 8555 /dev/video0

9) 카메라 장치를 인식하지 못해서 발생하는 에러

   - 카메라 사용한다고 설정을 바꿔주어야 한다. ($ sudo raspi-config) 그것이 아니면 케이블 등 다른 문제를 확인해볼 수 있다.

3. VLC로 영상 확인

  - PC 버전 VLC를 설치한 후 확인 가능하고 rtsp 디폴트 값으로 실행했다면 스트리밍 주소는

rtsp://라즈베리파이IP주소:8555/unicast     입니다.

라즈베리파이4 카메라 실시간 - lajeubelipai4 kamela silsigan

 - 다른 분이 unicast 끝에 / 붙여 있어서 같이 실행했는데 되지 않았습니다. 끝에 "/" 제거하고 실행해야 됩니다.

라즈베리파이4 카메라 실시간 - lajeubelipai4 kamela silsigan

4. 참  고

  - 웹캠이나 기타 카메라를 스트리밍하고 한다면 비디오 장치가 인식되었는지 확인이 필요합니다. 비디오 장치를 확인해보려면 아래 명령어를 사용하면 목록을 확인할 수 있습니다.

$ sudo apt-get install v4l-utils -y
$ v4l2-ctl --list-devices

 감사합니다.

<참고 사이트>

1. 실시간 스트리밍 프로토콜

https://ko.wikipedia.org/wiki/%EC%8B%A4%EC%8B%9C%EA%B0%84_%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

2. h264_v4l2_rtspserver

https://github.com/jjzhang166/h264_v4l2_rtspserver

3. V4L2 RTSP Server 설치

https://argc.tistory.com/334

4. Wazuh won't compile on FreeBSD due to OpenSSL version

https://github.com/wazuh/wazuh/issues/4054

5. ubuntu 연결된 webcam 확인

https://noel-embedded.tistory.com/1037