gortsplib icon indicating copy to clipboard operation
gortsplib copied to clipboard

RTSP 1.0 client and server library for the Go programming language

gortsplib

Test Lint Go Report Card CodeCov PkgGoDev

RTSP 1.0 client and server library for the Go programming language, written for rtsp-simple-server.

Go ≥ 1.17 is required.

Features:

  • Client
    • Query servers about available streams and tracks
    • Read
      • Read streams from servers with the UDP, UDP-multicast or TCP transport protocol
      • Read TLS-encrypted streams (TCP only)
      • Switch transport protocol automatically
      • Read only selected tracks of a stream
      • Pause or seek without disconnecting from the server
      • Generate RTCP receiver reports (UDP only)
      • Reorder incoming RTP packets (UDP only)
      • Clean up non-compliant streams (remove padding, re-encode RTP packets if they are too big)
    • Publish
      • Publish streams to servers with the UDP or TCP transport protocol
      • Publish TLS-encrypted streams (TCP only)
      • Switch transport protocol automatically
      • Pause without disconnecting from the server
      • Generate RTCP sender reports (UDP only)
  • Server
    • Handle requests from clients
    • Sessions and connections are independent
    • Publish
      • Read streams from clients with the UDP or TCP transport protocol
      • Read TLS-encrypted streams (TCP only)
      • Generate RTCP receiver reports (UDP only)
      • Reorder incoming RTP packets (UDP only)
      • Clean up non-compliant streams (remove padding, re-encode RTP packets if they are too big)
    • Read
      • Write streams to clients with the UDP, UDP-multicast or TCP transport protocol
      • Write TLS-encrypted streams
      • Compute and provide SSRC, RTP-Info to clients
      • Generate RTCP sender reports (UDP only)
  • Utilities
    • Parse RTSP elements: requests, responses, SDP
    • Parse H264 elements and formats: RTP/H264, Annex-B, AVCC, anti-competition, DTS
    • Parse AAC elements and formats: RTP/AAC, ADTS, MPEG-4 audio configurations

Table of contents

  • Examples
  • API Documentation
  • Links

Examples

  • client-query
  • client-read
  • client-read-partial
  • client-read-options
  • client-read-pause
  • client-read-h264
  • client-read-h264-convert-to-jpeg
  • client-read-h264-save-to-disk
  • client-read-aac
  • client-read-republish
  • client-publish-h264
  • client-publish-pcmu
  • client-publish-aac
  • client-publish-opus
  • client-publish-options
  • client-publish-pause
  • server
  • server-tls

API Documentation

https://pkg.go.dev/github.com/aler9/gortsplib#pkg-index

Links

Related projects

  • rtsp-simple-server https://github.com/aler9/rtsp-simple-server
  • pion/sdp (SDP library used internally) https://github.com/pion/sdp
  • pion/rtp (RTP library used internally) https://github.com/pion/rtp
  • pion/rtcp (RTCP library used internally) https://github.com/pion/rtcp

Standards

  • RTSP 1.0 https://tools.ietf.org/html/rfc2326
  • RTSP 2.0 https://tools.ietf.org/html/rfc7826
  • HTTP 1.1 https://tools.ietf.org/html/rfc2616
  • Golang project layout https://github.com/golang-standards/project-layout