mirror of
https://github.com/aler9/gortsplib
synced 2025-12-24 13:38:08 +08:00
3055b4f9a14bc33f3fd0bfdf9e918391a830c9f2
Previously, receiver reports were broadcasted to all connected clients. Now they are sent to the server only.
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%