mirror of
https://github.com/aler9/gortsplib
synced 2025-09-26 19:21:20 +08:00
1f543a0331000d358ac717517abe2981cfab65e3

These utilities were originally meant to handle RTCP only, now they are in charge of every QoS mechanism.
gortsplib
RTSP client and server library for the Go programming language, written for MediaMTX.
Go ≥ 1.24 is required.
Features:
- Client
- Support secure protocol variants (RTSPS, TLS, SRTP, MIKEY)
- Query servers about available media streams
- Read media streams from a server ("play")
- Read streams with the UDP, UDP-multicast or TCP transport protocol
- Switch transport protocol automatically
- Read selected media streams
- Pause or seek without disconnecting from the server
- Write to ONVIF back channels
- Get PTS (presentation timestamp) of incoming packets
- Get NTP (absolute timestamp) of incoming packets
- Write media streams to a server ("record")
- Write streams with the UDP or TCP transport protocol
- Switch transport protocol automatically
- Pause without disconnecting from the server
- Server
- Support secure protocol variants (RTSPS, TLS, SRTP, MIKEY)
- Handle requests from clients
- Validate client credentials
- Read media streams from clients ("record")
- Read streams with the UDP or TCP transport protocol
- Get PTS (presentation timestamp) of incoming packets
- Get NTP (absolute timestamp) of incoming packets
- Serve media streams to clients ("play")
- Write streams with the UDP, UDP-multicast or TCP transport protocol
- Compute and provide SSRC, RTP-Info to clients
- Read ONVIF back channels
- Utilities
- Parse RTSP elements
- Encode/decode RTP packets into/from codec-specific frames
Table of contents
Examples
- client-query
- client-play
- client-play-timestamp
- client-play-options
- client-play-pause
- client-play-to-record
- client-play-backchannel
- client-play-format-av1
- client-play-format-av1-to-jpeg
- client-play-format-g711
- client-play-format-h264
- client-play-format-h264-to-jpeg
- client-play-format-h264-to-disk
- client-play-format-h264-mpeg4audio-to-disk
- client-play-format-h265
- client-play-format-h265-to-jpeg
- client-play-format-h265-to-disk
- client-play-format-lpcm
- client-play-format-mjpeg
- client-play-format-mpeg4audio
- client-play-format-mpeg4audio-to-disk
- client-play-format-opus
- client-play-format-opus-to-disk
- client-play-format-vp8
- client-play-format-vp9
- client-record-options
- client-record-pause
- client-record-format-av1
- client-record-format-g711
- client-record-format-h264
- client-record-format-h264-from-disk
- client-record-format-h265
- client-record-format-lpcm
- client-record-format-mjpeg
- client-record-format-mpeg4audio
- client-record-format-opus
- client-record-format-vp8
- client-record-format-vp9
- server
- server-secure
- server-auth
- server-record-format-h264-to-disk
- server-play-format-h264-from-disk
- server-play-backchannel
- proxy
- proxy-backchannel
API Documentation
Click to open the API Documentation
RTP Payload Formats
In RTSP, media streams are transmitted by using RTP packets, which are encoded in a specific, codec-dependent, format. This library supports the following formats:
Video
format | documentation | encoder and decoder available |
---|---|---|
AV1 | link | ✔️ |
VP9 | link | ✔️ |
VP8 | link | ✔️ |
H265 | link | ✔️ |
H264 | link | ✔️ |
MPEG-4 Video (H263, Xvid) | link | ✔️ |
MPEG-1/2 Video | link | ✔️ |
M-JPEG | link | ✔️ |
Audio
format | documentation | encoder and decoder available |
---|---|---|
Opus | link | ✔️ |
Vorbis | link | |
MPEG-4 Audio (AAC) | link | ✔️ |
MPEG-4 Audio LATM (AAC-LATM) | link | ✔️ |
MPEG-1/2 Audio (MP3) | link | ✔️ |
AC-3 | link | ✔️ |
Speex | link | |
G726 | link | |
G722 | link | ✔️ |
G711 (PCMA, PCMU) | link | ✔️ |
LPCM | link | ✔️ |
Other
format | documentation | encoder and decoder available |
---|---|---|
MPEG-TS | link | |
KLV | link | ✔️ |
Specifications
Related projects
Languages
Go
99.8%
Makefile
0.2%