GStreamer RTSP(Server)

지원·2023년 4월 3일
0

자율주행 캐리어

목록 보기
2/2

GStreamer RTSP(Server) 개념 설명

RTSP(Reliable Transport Streaming Protocol)

  • 서버 스트리밍을 구현할 수 있는 도구 중 하나
  • IP 네트워크를 통해 미디어 스트림을 제공하는 프로토콜
  • 오디오, 비디오 및 데이터 스트림을 다른 장치나 어플리케이션에 전송할 수 있음.
  • GStreamer 기반의 프레임워크를 사용하여 미디어 스트림을 생성함
  • 이를 RTSP 프로토콜을 사용하여 네트워크 상에 전송함

RTSP 서버 스트리밍을 구현 방법

  1. GStreamer 설치: GStreamer를 설치해야 하기
sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
  1. 파이프라인 설정: RTSP 서버 스트리밍을 위한 GStreamer 파이프라인을 설정해야 함
    GStreamer를 사용하여 미디어 소스(예: 웹캠, 파일 등)를 가져와 RTSP 서버로 전송하는 파이프라인을 구성해야 함
    -> 파이프라인을 사용하여 웹캠에서 오디오와 비디오 스트림을 가져와 RTSP 서버로 전송하자.
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay name=pay0 pt=96 ! udpsink host=127.0.0.1 port=8554

오류 : WARNING: erroneous pipeline: no element "x264enc"
GStreamer 플러그인이 설치되어 있지 않아서 발생함
x264enc GStreamer 플러그인을 설치하면 됨
Ubuntu에서 x264enc 플러그인을 설치하는 방법:

sudo apt-get install gstreamer1.0-plugins-ugly
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay name=pay0 pt=96 ! udpsink host=127.0.0.1 port=8554

파이프라인에서 v4l2src는 웹캠에서 비디오 스트림을 가져오고, videoconvert는 포맷을 변환함.
x264enc는 비디오를 인코딩하고, rtph264pay는 RTP 페이로드로 변환함.
udpsink는 RTP 패킷을 지정된 호스트와 포트로 보냄

입력으로부터 비디오 데이터를 가져와서 x264enc를 사용하여 H.264로 인코딩하고, RTP 패킷으로 변환하는 GStreamer 파이프라인이다. 그리고 udpsink를 사용하여 RTP 패킷을 UDP 패킷으로 전송하고 있음.
RTP/UDP 스트림을 생성하고, 이를 수신하여 재생하는 RTSP 클라이언트 프로그램을 구현할 수 있음.

로그를 보면 "Pipeline is live and does not need PREROLL ..."와 같은 메시지가 표시되는데, 이는 파이프라인이 PREROLL 단계를 건너뛰고 바로 PLAYING 상태로 전환되었음을 의미함.
이는 GStreamer의 자동 PREROLL 기능 덕분에 가능.
이 파이프라인을 통해 생성된 RTP/UDP 스트림을 수신하여 재생할 RTSP 클라이언트 프로그램을 구현하면 됨.

profile
기록용

0개의 댓글