Skip to content

GStreamer:RTP RTSP

GStreamer는 RTP와 RTSP를 모두 훌륭하게 지원하며, RTP/RTSP 스택은 소형 임베디드 장치에서 대규모 화상 회의에 이르기까지 다양한 미션 크리티컬 및 짧은 대기 시간 시나리오에서 프로덕션 사용에 널리 사용됨을 수년 동안 입증했습니다.

GStreamer RTSP 서버

GStreamer의 RTSP 서버(gst-rtsp-server)는 응용 프로그램이 단 몇 줄의 코드로 완전한 RTSP 서버를 구현할 수 있도록 하는 기능이 풍부하고 사용하기 쉬운 라이브러리입니다.

다중 스레드, 확장 가능 및 유연성이 있으며 정적 또는 동적 마운트 지점, 인증, 재전송(rtx), 암호화(srtp, 보안 RTP), UDP 유니캐스트 및 멀티캐스트, TCP 인터리빙, 검색 및 선택적으로 지원을 제공합니다. 고급 리소스 관리 및 제어를 위한 cgroup 통합. 또한 GStreamer 넷 클라이언트 클록을 GStreamer RTSP 클라이언트에 배포하여 다중 장치 동기화를 용이하게 할 수 있습니다.

GStreamer RTSP 클라이언트

gst-plugins-good 의 GStreamer rtspsrc 요소는 GStreamer의 고수준 RTSP 클라이언트 추상화입니다. 독립형 요소로 직접 사용하거나 playbin 에 rtsp:// URI를 전달하여 playbin 을 통해 사용할 수 있습니다. rtspsrc 는 모든 종류의 다양한 방법으로 구성할 수 있는 여러 GObject 속성을 제공합니다. 특히 기본 지터버퍼 대기 시간을 구성하는 "대기 시간" 속성은 낮은 대기 시간을 달성하기 위해 더 낮은 값으로 구성할 수 있습니다.

RTP 구성요소

GStreamer의 주요 RTP 구성 요소 대부분은 gst-plugins-good에 있습니다.

  • rtpmanager 플러그인에는 rtpbin 및 rtpjitterbuffer 와 같은 요소가 포함되어 있습니다 .
  • rtp 플러그인에는 다양한 코덱 및 컨테이너 형식에 대한 RTP 페이로딩 및 디페이로딩 요소가 포함되어 있습니다 .

gst-plugins-base의 일부 하위 수준 라이브러리:

  • GStreamer RTP 라이브러리 에는 RTP 페이로더/디페이로더 기본 클래스와 RTP 및 RTCP 버퍼를 처리하는 기능이 포함되어 있습니다 .
  • GStreamer MIKEY 라이브러리 에는 안전한 RTP를 위해 MIKEY 메시지를 처리하는 도우미 기능이 포함되어 있습니다 .
  • GStreamer RTSP 라이브러리 에는 gst-rtsp-server에서 사용 하는 저수준 RTSP 기능과 rtspsrc와 같은 고수준 개체가 포함되어 있습니다.
  • GStreamer SDP 라이브러리 에는 SDP 메시지 구문 분석 및 생성을 위한 유틸리티 기능이 포함되어 있습니다 .

일부 주요 구성 요소는 다음과 같습니다:

  • rtpbin 은 높은 수준의 RTP 구성 요소이며 RTCP 지원 유무에 관계없이 송수신, 데이터 송수신만 지원합니다. 이것은 모든 작업을 수행하는 빈입니다. 요청된 패드를 기반으로 요구 사항에 동적으로 적응합니다. 그것은 또한 rtpjitterbuffer를 포함합니다.
  • rtpjitterbuffer 는 네트워크 지터를 제어하고 패킷을 재정렬하는 RTP 버퍼입니다. 또한 너무 늦게 도착한 패킷을 덤프하고 패킷 재전송 및 손실된 패킷 알림을 처리하며 발신자-수신자 클럭 드리프트를 조정합니다.
  • rtpptdemux 는 일반적으로 rtpbin src 패드에 있는 요소이며 RTP 스트림에 도착하는 새 페이로드 유형을 감지합니다. 그런 다음 새 페이로드에 대한 패드를 생성하고 해당 패드에 디페이로더/디코더 파이프라인을 연결할 수 있습니다.
  • rtpssrcdemux 는 일반적으로 rtpbin src 패드에 있는 요소이며 RTP 스트림에 도착하는 새 SSRC를 감지합니다. 그런 다음 새 SSRC에 대한 패드를 생성하고 해당 패드에 디페이로더/디코더 파이프라인을 연결할 수 있습니다.
  • GstRTPBaseDepayload 는 RTP 디페이로더의 기본 클래스입니다.
  • GstRTPBasePayload 는 RTP 페이로더의 기본 클래스입니다.
  • GstRTPBaseAudioPayload 는 오디오 RTP 페이로더의 기본 클래스입니다.

많은 RTP 요소는 GstNetAddressMeta 메타 데이터 세트가 있는 RTP 버퍼를 수신한다고 가정합니다(udpsrc가 생성하므로).

Good Plugins

rtp from GStreamer Good Plug-ins

  • asteriskh263 - Extracts H263 video from RTP and encodes in Asterisk H263 format
  • rtpac3depay - Extracts AC3 audio from RTP packets (RFC 4184)
  • rtpac3pay - Payload AC3 audio as RTP packets (RFC 4184)
  • rtpamrdepay - Extracts AMR or AMR-WB audio from RTP packets (RFC 3267)
  • rtpamrpay - Payload-encode AMR or AMR-WB audio into RTP packets (RFC 3267)
  • rtpbvdepay - Extracts BroadcomVoice audio from RTP packets (RFC 4298)
  • rtpbvpay - Packetize BroadcomVoice audio streams into RTP packets (RFC 4298)
  • rtpceltdepay - Extracts CELT audio from RTP packets
  • rtpceltpay - Payload-encodes CELT audio into a RTP packet
  • rtpdvdepay - Depayloads DV from RTP packets (RFC 3189)
  • rtpdvpay - Payloads DV into RTP packets (RFC 3189)
  • rtpg722depay - Extracts G722 audio from RTP packets
  • rtpg722pay - Payload-encode Raw audio into RTP packets (RFC 3551)
  • rtpg723depay - Extracts G.723 audio from RTP packets (RFC 3551)
  • rtpg723pay - Packetize G.723 audio into RTP packets
  • rtpg726depay - Extracts G.726 audio from RTP packets
  • rtpg726pay - Payload-encodes G.726 audio into a RTP packet
  • rtpg729depay - Extracts G.729 audio from RTP packets (RFC 3551)
  • rtpg729pay - Packetize G.729 audio into RTP packets
  • rtpgsmdepay - Extracts GSM audio from RTP packets
  • rtpgsmpay - Payload-encodes GSM audio into a RTP packet
  • rtpgstdepay - Extracts GStreamer buffers from RTP packets
  • rtpgstpay - Payload GStreamer buffers as RTP packets
  • rtph261depay - Extracts H261 video from RTP packets (RFC 4587)
  • rtph261pay - Payload-encodes H261 video in RTP packets (RFC 4587)
  • rtph263depay - Extracts H263 video from RTP packets (RFC 2190)
  • rtph263pay - Payload-encodes H263 video in RTP packets (RFC 2190)
  • rtph263pdepay - Extracts H263/+/++ video from RTP packets (RFC 4629)
  • rtph263ppay - Payload-encodes H263/+/++ video in RTP packets (RFC 4629)
  • rtph264depay - Extracts H264 video from RTP packets (RFC 3984)
  • rtph264pay - Payload-encode H264 video into RTP packets (RFC 3984)
  • rtph265depay - Extracts H265 video from RTP packets (RFC 7798)
  • rtph265pay - Payload-encode H265 video into RTP packets (RFC 7798)
  • rtphdrextcolorspace - Extends RTP packets with color space and high dynamic range (HDR) information.
  • rtpilbcdepay - Extracts iLBC audio from RTP packets (RFC 3952)
  • rtpilbcpay - Packetize iLBC audio streams into RTP packets
  • rtpisacdepay - Extracts iSAC audio from RTP packets
  • rtpisacpay - Payload-encodes iSAC audio into a RTP packet
  • rtpj2kdepay - Extracts JPEG 2000 video from RTP packets (RFC 5371)
  • rtpj2kpay - Payload-encodes JPEG 2000 pictures into RTP packets (RFC 5371)
  • rtpjpegdepay - Extracts JPEG video from RTP packets (RFC 2435)
  • rtpjpegpay - Payload-encodes JPEG pictures into RTP packets (RFC 2435)
  • rtpklvdepay - Extracts KLV (SMPTE ST 336) metadata from RTP packets
  • rtpklvpay - Payloads KLV (SMPTE ST 336) metadata as RTP packets
  • rtpL16depay - Extracts raw audio from RTP packets
  • rtpL16pay - Payload-encode Raw audio into RTP packets (RFC 3551)
  • rtpL24depay - Extracts raw 24-bit audio from RTP packets
  • rtpL24pay - Payload-encode Raw 24-bit audio into RTP packets (RFC 3190)
  • rtpL8depay - Extracts raw audio from RTP packets
  • rtpL8pay - Payload-encode Raw audio into RTP packets (RFC 3551)
  • rtpldacpay - Payload LDAC audio as RTP packets
  • rtpmp1sdepay - Extracts MPEG1 System Streams from RTP packets (RFC 3555)
  • rtpmp2tdepay - Extracts MPEG2 TS from RTP packets (RFC 2250)
  • rtpmp2tpay - Payload-encodes MPEG2 TS into RTP packets (RFC 2250)
  • rtpmp4adepay - Extracts MPEG4 audio from RTP packets (RFC 3016)
  • rtpmp4apay - Payload MPEG4 audio as RTP packets (RFC 3016)
  • rtpmp4gdepay - Extracts MPEG4 elementary streams from RTP packets (RFC 3640)
  • rtpmp4gpay - Payload MPEG4 elementary streams as RTP packets (RFC 3640)
  • rtpmp4vdepay - Extracts MPEG4 video from RTP packets (RFC 3016)
  • rtpmp4vpay - Payload MPEG-4 video as RTP packets (RFC 3016)
  • rtpmpadepay - Extracts MPEG audio from RTP packets (RFC 2038)
  • rtpmpapay - Payload MPEG audio as RTP packets (RFC 2038)
  • rtpmparobustdepay - Extracts MPEG audio from RTP packets (RFC 5219)
  • rtpmpvdepay - Extracts MPEG video from RTP packets (RFC 2250)
  • rtpmpvpay - Payload-encodes MPEG2 ES into RTP packets (RFC 2250)
  • rtpopusdepay - Extracts Opus audio from RTP packets
  • rtpopuspay - Puts Opus audio in RTP packets
  • rtppcmadepay - Extracts PCMA audio from RTP packets
  • rtppcmapay - Payload-encodes PCMA audio into a RTP packet
  • rtppcmudepay - Extracts PCMU audio from RTP packets
  • rtppcmupay - Payload-encodes PCMU audio into a RTP packet
  • rtpqcelpdepay - Extracts QCELP (PureVoice) audio from RTP packets (RFC 2658)
  • rtpqdm2depay - Extracts QDM2 audio from RTP packets (no RFC)
  • rtpreddec - Decode Redundant Audio Data (RED)
  • rtpredenc - Encode Redundant Audio Data (RED)
  • rtpsbcdepay - Extracts SBC audio from RTP packets
  • rtpsbcpay - Payload SBC audio as RTP packets
  • rtpsirendepay - Extracts Siren audio from RTP packets
  • rtpsirenpay - Packetize Siren audio streams into RTP packets
  • rtpspeexdepay - Extracts Speex audio from RTP packets
  • rtpspeexpay - Payload-encodes Speex audio into a RTP packet
  • rtpstorage - Helper element for various purposes (ex. recovering from packet loss using RED/FEC). Saves given number of RTP packets. Should be instantiated before jitterbuffer
  • rtpstreamdepay - Depayloads RTP/RTCP packets for streaming protocols according to RFC4571
  • rtpstreampay - Payloads RTP/RTCP packets for streaming protocols according to RFC4571
  • rtpsv3vdepay - Extracts SVQ3 video from RTP packets (no RFC)
  • rtptheoradepay - Extracts Theora video from RTP packets (draft-01 of RFC XXXX)
  • rtptheorapay - Payload-encode Theora video into RTP packets (draft-01 RFC XXXX)
  • rtpulpfecdec - Decodes RTP FEC (RFC5109)
  • rtpulpfecenc - Encodes RTP FEC (RFC5109)
  • rtpvorbisdepay - Extracts Vorbis Audio from RTP packets (RFC 5215)
  • rtpvorbispay - Payload-encode Vorbis audio into RTP packets (RFC 5215)
  • rtpvp8depay - Extracts VP8 video from RTP packets)
  • rtpvp8pay - Puts VP8 video in RTP packets
  • rtpvp9depay - Extracts VP9 video from RTP packets)
  • rtpvp9pay - Puts VP9 video in RTP packets)
  • rtpvrawdepay - Extracts raw video from RTP packets (RFC 4175)
  • rtpvrawpay - Payload raw video as RTP packets (RFC 4175)

See also

Favorite site