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)