mirror of
https://github.com/aler9/gortsplib
synced 2025-09-27 03:25:52 +08:00
4f3337f56cdaeebd3a8065bbf7e54e3093c09443

In client and server, each format now has a fixed, unique, known in advance SSRC, that is applied to outgoing packets belonging to each format. This is needed to support SRTP/MIKEY, that require each format to have a fixed, unique, and known in advance SSRC. A secondary effect is that SETUP responses now always contain SSRCs of each format, regardless of the fact that the first packet has been produced or not (previously we needed at least one packet, from which the SSRC was extracted).
gortsplib
RTSP 1.0 client and server library for the Go programming language, written for MediaMTX.
Go ≥ 1.23 is required.
Features:
- Client
- Query servers about available media streams
- Read media streams from a server ("play")
- Read streams with the UDP, UDP-multicast or TCP transport protocol
- Read TLS-encrypted streams (TCP only)
- Switch transport protocol automatically
- Read selected media streams
- Pause or seek without disconnecting from the server
- Write to ONVIF back channels
- Get PTS (relative) 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
- Write TLS-encrypted streams (TCP only)
- Switch transport protocol automatically
- Pause without disconnecting from the server
- Server
- Handle requests from clients
- Validate client credentials
- Read media streams from clients ("record")
- Read streams with the UDP or TCP transport protocol
- Read TLS-encrypted streams (TCP only)
- Get PTS (relative) 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
- Write TLS-encrypted streams (TCP only)
- 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-tls
- 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 formats for the following codecs:
Video
codec | 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
codec | documentation | encoder and decoder available |
---|---|---|
Opus | link | ✔️ |
Vorbis | link | |
MPEG-4 Audio (AAC) | link | ✔️ |
MPEG-1/2 Audio (MP3) | link | ✔️ |
AC-3 | link | ✔️ |
Speex | link | |
G726 | link | |
G722 | link | ✔️ |
G711 (PCMA, PCMU) | link | ✔️ |
LPCM | link | ✔️ |
Other
codec | documentation | encoder and decoder available |
---|---|---|
MPEG-TS | link |
Specifications
Related projects
Languages
Go
99.8%
Makefile
0.2%