gortsplib

package module
v3.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2023 License: MIT Imports: 32 Imported by: 8

README

gortsplib

Test Lint Go Report Card CodeCov PkgGoDev

RTSP 1.0 client and server library for the Go programming language, written for MediaMTX.

Go ≥ 1.19 is required.

Features:

  • Client
    • Query servers about available media streams
    • Read
      • Read media 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 media streams
      • Pause or seek without disconnecting from the server
      • Generate RTCP receiver reports (UDP only)
      • Reorder incoming RTP packets (UDP only)
    • Publish
      • Publish media 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
  • Server
    • Handle requests from clients
    • Sessions and connections are independent
    • Publish
      • Read media 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)
    • Read
      • Write media 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
  • Utilities
    • Parse RTSP elements
    • Encode/decode format-specific frames into/from RTP packets

Table of contents

Examples

API Documentation

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

RTP Payload Formats

In RTSP, media streams are routed between server and clients by using RTP packets. Conversion between RTP packets and codec-specific frames happens by using a payload format. This library recognizes the following payload formats:

Video
format / codec variant 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 / codec variant documentation encoder and decoder available
Opus link
Vorbis link
MPEG-4 Audio (AAC) Generic (RFC3640) link
MPEG-4 Audio (AAC) LATM (RFC6416) link
MPEG-1/2 Audio (MP3) link
Speex link
G726 link
G722 link
G711 (PCMA, PCMU) link
LPCM link
Mixed
format / codec variant documentation encoder and decoder available
MPEG-TS link

Standards

Documentation

Overview

Package gortsplib is a RTSP 1.0 library for the Go programming language.

Examples are available at https://github.com/bluenviron/gortsplib/tree/main/examples

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	//
	// RTSP parameters (all optional)
	//
	// timeout of read operations.
	// It defaults to 10 seconds.
	ReadTimeout time.Duration
	// timeout of write operations.
	// It defaults to 10 seconds.
	WriteTimeout time.Duration
	// a TLS configuration to connect to TLS (RTSPS) servers.
	// It defaults to nil.
	TLSConfig *tls.Config
	// enable communication with servers which don't provide UDP server ports
	// or use different server ports than the announced ones.
	// This can be a security issue.
	// It defaults to false.
	AnyPortEnable bool
	// transport protocol (UDP, Multicast or TCP).
	// If nil, it is chosen automatically (first UDP, then, if it fails, TCP).
	// It defaults to nil.
	Transport *Transport
	// If the client is reading with UDP, it must receive
	// at least a packet within this timeout, otherwise it switches to TCP.
	// It defaults to 3 seconds.
	InitialUDPReadTimeout time.Duration
	// read buffer count.
	// If greater than 1, allows to pass buffers to routines different than the one
	// that is reading frames.
	// It defaults to 256.
	ReadBufferCount int
	// write buffer count.
	// It allows to queue packets before sending them.
	// It defaults to 256.
	WriteBufferCount int
	// user agent header.
	// It defaults to "gortsplib"
	UserAgent string
	// disable automatic RTCP sender reports.
	DisableRTCPSenderReports bool
	// pointer to a variable that stores received bytes.
	BytesReceived *uint64
	// pointer to a variable that stores sent bytes.
	BytesSent *uint64
	// Deprecated: disabling redirects doesn't improve security.
	RedirectDisable bool

	//
	// system functions (all optional)
	//
	// function used to initialize the TCP client.
	// It defaults to (&net.Dialer{}).DialContext.
	DialContext func(ctx context.Context, network, address string) (net.Conn, error)
	// function used to initialize UDP listeners.
	// It defaults to net.ListenPacket.
	ListenPacket func(network, address string) (net.PacketConn, error)

	//
	// callbacks (all optional)
	//
	// called before every request.
	OnRequest ClientOnRequestFunc
	// called after every response.
	OnResponse ClientOnResponseFunc
	// called when the transport protocol changes.
	OnTransportSwitch ClientOnTransportSwitchFunc
	// called when the client detects lost packets.
	OnPacketLost ClientOnPacketLostFunc
	// called when a non-fatal decode error occurs.
	OnDecodeError ClientOnDecodeErrorFunc
	// Deprecated: replaced by OnTransportSwitch, OnPacketLost, OnDecodeError
	Log ClientLogFunc
	// contains filtered or unexported fields
}

Client is a RTSP client.

func (*Client) Announce

func (c *Client) Announce(u *url.URL, medias media.Medias) (*base.Response, error)

Announce writes an ANNOUNCE request and reads a Response.

func (*Client) Close

func (c *Client) Close() error

Close closes all client resources and waits for them to close.

func (*Client) Describe

func (c *Client) Describe(u *url.URL) (media.Medias, *url.URL, *base.Response, error)

Describe writes a DESCRIBE request and reads a Response.

func (*Client) OnPacketRTCP

func (c *Client) OnPacketRTCP(medi *media.Media, cb OnPacketRTCPFunc)

OnPacketRTCP sets the callback that is called when a RTCP packet is read.

func (*Client) OnPacketRTCPAny

func (c *Client) OnPacketRTCPAny(cb OnPacketRTCPAnyFunc)

OnPacketRTCPAny sets the callback that is called when a RTCP packet is read from any setupped media.

func (*Client) OnPacketRTP

func (c *Client) OnPacketRTP(medi *media.Media, forma formats.Format, cb OnPacketRTPFunc)

OnPacketRTP sets the callback that is called when a RTP packet is read.

func (*Client) OnPacketRTPAny

func (c *Client) OnPacketRTPAny(cb OnPacketRTPAnyFunc)

OnPacketRTPAny sets the callback that is called when a RTP packet is read from any setupped media.

func (*Client) Options

func (c *Client) Options(u *url.URL) (*base.Response, error)

Options writes an OPTIONS request and reads a response.

func (*Client) Pause

func (c *Client) Pause() (*base.Response, error)

Pause writes a PAUSE request and reads a Response. This can be called only after Play() or Record().

func (*Client) Play

func (c *Client) Play(ra *headers.Range) (*base.Response, error)

Play writes a PLAY request and reads a Response. This can be called only after Setup().

func (*Client) Record

func (c *Client) Record() (*base.Response, error)

Record writes a RECORD request and reads a Response. This can be called only after Announce() and Setup().

func (*Client) Seek

func (c *Client) Seek(ra *headers.Range) (*base.Response, error)

Seek asks the server to re-start the stream from a specific timestamp.

func (*Client) Setup

func (c *Client) Setup(
	media *media.Media,
	baseURL *url.URL,
	rtpPort int,
	rtcpPort int,
) (*base.Response, error)

Setup writes a SETUP request and reads a Response. rtpPort and rtcpPort are used only if transport is UDP. if rtpPort and rtcpPort are zero, they are chosen automatically.

func (*Client) SetupAll

func (c *Client) SetupAll(medias media.Medias, baseURL *url.URL) error

SetupAll setups all the given medias.

func (*Client) Start

func (c *Client) Start(scheme string, host string) error

Start initializes the connection to a server.

func (*Client) StartRecording

func (c *Client) StartRecording(address string, medias media.Medias) error

StartRecording connects to the address and starts publishing given media.

func (*Client) Wait

func (c *Client) Wait() error

Wait waits until all client resources are closed. This can happen when a fatal error occurs or when Close() is called.

func (*Client) WritePacketRTCP

func (c *Client) WritePacketRTCP(medi *media.Media, pkt rtcp.Packet) error

WritePacketRTCP writes a RTCP packet to the media stream.

func (*Client) WritePacketRTP

func (c *Client) WritePacketRTP(medi *media.Media, pkt *rtp.Packet) error

WritePacketRTP writes a RTP packet to the media stream.

func (*Client) WritePacketRTPWithNTP

func (c *Client) WritePacketRTPWithNTP(medi *media.Media, pkt *rtp.Packet, ntp time.Time) error

WritePacketRTPWithNTP writes a RTP packet to the media stream.

type ClientLogFunc deprecated added in v3.1.0

type ClientLogFunc func(level LogLevel, format string, args ...interface{})

ClientLogFunc is the prototype of the log function.

Deprecated: Log() is deprecated.

type ClientOnDecodeErrorFunc added in v3.10.0

type ClientOnDecodeErrorFunc func(err error)

ClientOnDecodeErrorFunc is the prototype of Client.OnDecodeError.

type ClientOnPacketLostFunc added in v3.10.0

type ClientOnPacketLostFunc func(err error)

ClientOnPacketLostFunc is the prototype of Client.OnPacketLost.

type ClientOnRequestFunc added in v3.10.0

type ClientOnRequestFunc func(*base.Request)

ClientOnRequestFunc is the prototype of Client.OnRequest.

type ClientOnResponseFunc added in v3.10.0

type ClientOnResponseFunc func(*base.Response)

ClientOnResponseFunc is the prototype of Client.OnResponse.

type ClientOnTransportSwitchFunc added in v3.10.0

type ClientOnTransportSwitchFunc func(err error)

ClientOnTransportSwitchFunc is the prototype of Client.OnTransportSwitch.

type LogLevel deprecated

type LogLevel int

LogLevel is a log level.

Deprecated: Log() is deprecated.

const (
	LogLevelDebug LogLevel = iota + 1
	LogLevelInfo
	LogLevelWarn
	LogLevelError
)

Log levels.

Deprecated: Log() is deprecated.

type OnPacketRTCPAnyFunc added in v3.10.0

type OnPacketRTCPAnyFunc func(*media.Media, rtcp.Packet)

OnPacketRTCPAnyFunc is the prototype of the callback passed to OnPacketRTCPAny().

type OnPacketRTCPFunc added in v3.10.0

type OnPacketRTCPFunc func(rtcp.Packet)

OnPacketRTCPFunc is the prototype of the callback passed to OnPacketRTCP().

type OnPacketRTPAnyFunc added in v3.10.0

type OnPacketRTPAnyFunc func(*media.Media, formats.Format, *rtp.Packet)

OnPacketRTPAnyFunc is the prototype of the callback passed to OnPacketRTP(Any).

type OnPacketRTPFunc added in v3.10.0

type OnPacketRTPFunc func(*rtp.Packet)

OnPacketRTPFunc is the prototype of the callback passed to OnPacketRTP().

type Server

type Server struct {
	//
	// RTSP parameters (all optional except RTSPAddress)
	//
	// the RTSP address of the server, to accept connections and send and receive
	// packets with the TCP transport.
	RTSPAddress string
	// a port to send and receive RTP packets with the UDP transport.
	// If UDPRTPAddress and UDPRTCPAddress are filled, the server can support the UDP transport.
	UDPRTPAddress string
	// a port to send and receive RTCP packets with the UDP transport.
	// If UDPRTPAddress and UDPRTCPAddress are filled, the server can support the UDP transport.
	UDPRTCPAddress string
	// a range of multicast IPs to use with the UDP-multicast transport.
	// If MulticastIPRange, MulticastRTPPort, MulticastRTCPPort are filled, the server
	// can support the UDP-multicast transport.
	MulticastIPRange string
	// a port to send RTP packets with the UDP-multicast transport.
	// If MulticastIPRange, MulticastRTPPort, MulticastRTCPPort are filled, the server
	// can support the UDP-multicast transport.
	MulticastRTPPort int
	// a port to send RTCP packets with the UDP-multicast transport.
	// If MulticastIPRange, MulticastRTPPort, MulticastRTCPPort are filled, the server
	// can support the UDP-multicast transport.
	MulticastRTCPPort int
	// timeout of read operations.
	// It defaults to 10 seconds
	ReadTimeout time.Duration
	// timeout of write operations.
	// It defaults to 10 seconds
	WriteTimeout time.Duration
	// a TLS configuration to accept TLS (RTSPS) connections.
	TLSConfig *tls.Config
	// read buffer count.
	// If greater than 1, allows to pass buffers to routines different than the one
	// that is reading frames.
	// It also allows to buffer routed frames and mitigate network fluctuations
	// that are particularly relevant when using UDP.
	// It defaults to 256.
	ReadBufferCount int
	// write buffer count.
	// It allows to queue packets before sending them.
	// It defaults to 256.
	WriteBufferCount int
	// disable automatic RTCP sender reports.
	DisableRTCPSenderReports bool

	//
	// handler (optional)
	//
	// an handler to handle server events.
	// It may implement one or more of the ServerHandler* interfaces.
	Handler ServerHandler

	//
	// system functions (all optional)
	//
	// function used to initialize the TCP listener.
	// It defaults to net.Listen.
	Listen func(network string, address string) (net.Listener, error)
	// function used to initialize UDP listeners.
	// It defaults to net.ListenPacket.
	ListenPacket func(network, address string) (net.PacketConn, error)
	// contains filtered or unexported fields
}

Server is a RTSP server.

func (*Server) Close

func (s *Server) Close() error

Close closes all the server resources and waits for them to close.

func (*Server) Start

func (s *Server) Start() error

Start starts the server.

func (*Server) StartAndWait

func (s *Server) StartAndWait() error

StartAndWait starts the server and waits until a fatal error.

func (*Server) Wait

func (s *Server) Wait() error

Wait waits until all server resources are closed. This can happen when a fatal error occurs or when Close() is called.

type ServerConn

type ServerConn struct {
	// contains filtered or unexported fields
}

ServerConn is a server-side RTSP connection.

func (*ServerConn) BytesReceived

func (sc *ServerConn) BytesReceived() uint64

BytesReceived returns the number of read bytes.

func (*ServerConn) BytesSent

func (sc *ServerConn) BytesSent() uint64

BytesSent returns the number of written bytes.

func (*ServerConn) Close

func (sc *ServerConn) Close() error

Close closes the ServerConn.

func (*ServerConn) NetConn

func (sc *ServerConn) NetConn() net.Conn

NetConn returns the underlying net.Conn.

func (*ServerConn) SetUserData

func (sc *ServerConn) SetUserData(v interface{})

SetUserData sets some user data associated to the connection.

func (*ServerConn) UserData

func (sc *ServerConn) UserData() interface{}

UserData returns some user data associated to the connection.

type ServerHandler

type ServerHandler interface{}

ServerHandler is the interface implemented by all the server handlers.

type ServerHandlerOnAnnounce

type ServerHandlerOnAnnounce interface {
	// called when receiving an ANNOUNCE request.
	OnAnnounce(*ServerHandlerOnAnnounceCtx) (*base.Response, error)
}

ServerHandlerOnAnnounce can be implemented by a ServerHandler.

type ServerHandlerOnAnnounceCtx

type ServerHandlerOnAnnounceCtx struct {
	Server  *Server
	Session *ServerSession
	Conn    *ServerConn
	Request *base.Request
	Path    string
	Query   string
	Medias  media.Medias
}

ServerHandlerOnAnnounceCtx is the context of OnAnnounce.

type ServerHandlerOnConnClose

type ServerHandlerOnConnClose interface {
	// called when a connection is closed.
	OnConnClose(*ServerHandlerOnConnCloseCtx)
}

ServerHandlerOnConnClose can be implemented by a ServerHandler.

type ServerHandlerOnConnCloseCtx

type ServerHandlerOnConnCloseCtx struct {
	Conn  *ServerConn
	Error error
}

ServerHandlerOnConnCloseCtx is the context of OnConnClose.

type ServerHandlerOnConnOpen

type ServerHandlerOnConnOpen interface {
	// called when a connection is opened.
	OnConnOpen(*ServerHandlerOnConnOpenCtx)
}

ServerHandlerOnConnOpen can be implemented by a ServerHandler.

type ServerHandlerOnConnOpenCtx

type ServerHandlerOnConnOpenCtx struct {
	Conn *ServerConn
}

ServerHandlerOnConnOpenCtx is the context of OnConnOpen.

type ServerHandlerOnDecodeError added in v3.1.0

type ServerHandlerOnDecodeError interface {
	// called when a non-fatal decode error occurs.
	OnDecodeError(*ServerHandlerOnDecodeErrorCtx)
}

ServerHandlerOnDecodeError can be implemented by a ServerHandler.

type ServerHandlerOnDecodeErrorCtx added in v3.1.0

type ServerHandlerOnDecodeErrorCtx struct {
	Session *ServerSession
	Error   error
}

ServerHandlerOnDecodeErrorCtx is the context of OnDecodeError.

type ServerHandlerOnDescribe

type ServerHandlerOnDescribe interface {
	// called when receiving a DESCRIBE request.
	OnDescribe(*ServerHandlerOnDescribeCtx) (*base.Response, *ServerStream, error)
}

ServerHandlerOnDescribe can be implemented by a ServerHandler.

type ServerHandlerOnDescribeCtx

type ServerHandlerOnDescribeCtx struct {
	Conn    *ServerConn
	Request *base.Request
	Path    string
	Query   string
}

ServerHandlerOnDescribeCtx is the context of OnDescribe.

type ServerHandlerOnGetParameter

type ServerHandlerOnGetParameter interface {
	// called when receiving a GET_PARAMETER request.
	OnGetParameter(*ServerHandlerOnGetParameterCtx) (*base.Response, error)
}

ServerHandlerOnGetParameter can be implemented by a ServerHandler.

type ServerHandlerOnGetParameterCtx

type ServerHandlerOnGetParameterCtx struct {
	Session *ServerSession
	Conn    *ServerConn
	Request *base.Request
	Path    string
	Query   string
}

ServerHandlerOnGetParameterCtx is the context of OnGetParameter.

type ServerHandlerOnPacketLost added in v3.1.0

type ServerHandlerOnPacketLost interface {
	// called when the server detects lost packets.
	OnPacketLost(*ServerHandlerOnPacketLostCtx)
}

ServerHandlerOnPacketLost can be implemented by a ServerHandler.

type ServerHandlerOnPacketLostCtx added in v3.1.0

type ServerHandlerOnPacketLostCtx struct {
	Session *ServerSession
	Error   error
}

ServerHandlerOnPacketLostCtx is the context of OnPacketLost.

type ServerHandlerOnPause

type ServerHandlerOnPause interface {
	// called when receiving a PAUSE request.
	OnPause(*ServerHandlerOnPauseCtx) (*base.Response, error)
}

ServerHandlerOnPause can be implemented by a ServerHandler.

type ServerHandlerOnPauseCtx

type ServerHandlerOnPauseCtx struct {
	Session *ServerSession
	Conn    *ServerConn
	Request *base.Request
	Path    string
	Query   string
}

ServerHandlerOnPauseCtx is the context of OnPause.

type ServerHandlerOnPlay

type ServerHandlerOnPlay interface {
	// called when receiving a PLAY request.
	OnPlay(*ServerHandlerOnPlayCtx) (*base.Response, error)
}

ServerHandlerOnPlay can be implemented by a ServerHandler.

type ServerHandlerOnPlayCtx

type ServerHandlerOnPlayCtx struct {
	Session *ServerSession
	Conn    *ServerConn
	Request *base.Request
	Path    string
	Query   string
}

ServerHandlerOnPlayCtx is the context of OnPlay.

type ServerHandlerOnRecord

type ServerHandlerOnRecord interface {
	// called when receiving a RECORD request.
	OnRecord(*ServerHandlerOnRecordCtx) (*base.Response, error)
}

ServerHandlerOnRecord can be implemented by a ServerHandler.

type ServerHandlerOnRecordCtx

type ServerHandlerOnRecordCtx struct {
	Session *ServerSession
	Conn    *ServerConn
	Request *base.Request
	Path    string
	Query   string
}

ServerHandlerOnRecordCtx is the context of OnRecord.

type ServerHandlerOnRequest

type ServerHandlerOnRequest interface {
	// called before every request.
	OnRequest(*ServerConn, *base.Request)
}

ServerHandlerOnRequest can be implemented by a ServerHandler.

type ServerHandlerOnResponse

type ServerHandlerOnResponse interface {
	// called after every response.
	OnResponse(*ServerConn, *base.Response)
}

ServerHandlerOnResponse can be implemented by a ServerHandler.

type ServerHandlerOnSessionClose

type ServerHandlerOnSessionClose interface {
	// called when a session is closed.
	OnSessionClose(*ServerHandlerOnSessionCloseCtx)
}

ServerHandlerOnSessionClose can be implemented by a ServerHandler.

type ServerHandlerOnSessionCloseCtx

type ServerHandlerOnSessionCloseCtx struct {
	Session *ServerSession
	Error   error
}

ServerHandlerOnSessionCloseCtx is the context of ServerHandlerOnSessionClose.

type ServerHandlerOnSessionOpen

type ServerHandlerOnSessionOpen interface {
	// called when a session is opened.
	OnSessionOpen(*ServerHandlerOnSessionOpenCtx)
}

ServerHandlerOnSessionOpen can be implemented by a ServerHandler.

type ServerHandlerOnSessionOpenCtx

type ServerHandlerOnSessionOpenCtx struct {
	Session *ServerSession
	Conn    *ServerConn
}

ServerHandlerOnSessionOpenCtx is the context OnSessionOpen.

type ServerHandlerOnSetParameter

type ServerHandlerOnSetParameter interface {
	// called when receiving a SET_PARAMETER request.
	OnSetParameter(*ServerHandlerOnSetParameterCtx) (*base.Response, error)
}

ServerHandlerOnSetParameter can be implemented by a ServerHandler.

type ServerHandlerOnSetParameterCtx

type ServerHandlerOnSetParameterCtx struct {
	Session *ServerSession
	Conn    *ServerConn
	Request *base.Request
	Path    string
	Query   string
}

ServerHandlerOnSetParameterCtx is the context of OnSetParameter.

type ServerHandlerOnSetup

type ServerHandlerOnSetup interface {
	// called when receiving a SETUP request.
	// must return a Response and a stream.
	// the stream is needed to
	// - add the session the the stream's readers
	// - send the stream SSRC to the session
	OnSetup(*ServerHandlerOnSetupCtx) (*base.Response, *ServerStream, error)
}

ServerHandlerOnSetup can be implemented by a ServerHandler.

type ServerHandlerOnSetupCtx

type ServerHandlerOnSetupCtx struct {
	Server    *Server
	Session   *ServerSession
	Conn      *ServerConn
	Request   *base.Request
	Path      string
	Query     string
	Transport Transport
}

ServerHandlerOnSetupCtx is the context of OnSetup.

type ServerHandlerOnWarning deprecated

type ServerHandlerOnWarning interface {
	OnWarning(*ServerHandlerOnWarningCtx)
}

ServerHandlerOnWarning can be implemented by a ServerHandler.

Deprecated: replaced by OnPacketLost, OnDecodeError.

type ServerHandlerOnWarningCtx deprecated

type ServerHandlerOnWarningCtx struct {
	Session *ServerSession
	Error   error
}

ServerHandlerOnWarningCtx is the context of OnWarning.

Deprecated: ServerHandlerOnWarning is deprecated.

type ServerSession

type ServerSession struct {
	// contains filtered or unexported fields
}

ServerSession is a server-side RTSP session.

func (*ServerSession) AnnouncedMedias

func (ss *ServerSession) AnnouncedMedias() media.Medias

AnnouncedMedias returns the announced medias.

func (*ServerSession) BytesReceived

func (ss *ServerSession) BytesReceived() uint64

BytesReceived returns the number of read bytes.

func (*ServerSession) BytesSent

func (ss *ServerSession) BytesSent() uint64

BytesSent returns the number of written bytes.

func (*ServerSession) Close

func (ss *ServerSession) Close() error

Close closes the ServerSession.

func (*ServerSession) OnPacketRTCP

func (ss *ServerSession) OnPacketRTCP(medi *media.Media, cb OnPacketRTCPFunc)

OnPacketRTCP sets the callback that is called when a RTCP packet is read.

func (*ServerSession) OnPacketRTCPAny

func (ss *ServerSession) OnPacketRTCPAny(cb OnPacketRTCPAnyFunc)

OnPacketRTCPAny sets the callback that is called when a RTCP packet is read from any setupped media.

func (*ServerSession) OnPacketRTP

func (ss *ServerSession) OnPacketRTP(medi *media.Media, forma formats.Format, cb OnPacketRTPFunc)

OnPacketRTP sets the callback that is called when a RTP packet is read.

func (*ServerSession) OnPacketRTPAny

func (ss *ServerSession) OnPacketRTPAny(cb OnPacketRTPAnyFunc)

OnPacketRTPAny sets the callback that is called when a RTP packet is read from any setupped media.

func (*ServerSession) SetUserData

func (ss *ServerSession) SetUserData(v interface{})

SetUserData sets some user data associated to the session.

func (*ServerSession) SetuppedMedias

func (ss *ServerSession) SetuppedMedias() media.Medias

SetuppedMedias returns the setupped medias.

func (*ServerSession) SetuppedTransport

func (ss *ServerSession) SetuppedTransport() *Transport

SetuppedTransport returns the transport negotiated during SETUP.

func (*ServerSession) State

func (ss *ServerSession) State() ServerSessionState

State returns the state of the session.

func (*ServerSession) UserData

func (ss *ServerSession) UserData() interface{}

UserData returns some user data associated to the session.

func (*ServerSession) WritePacketRTCP

func (ss *ServerSession) WritePacketRTCP(medi *media.Media, pkt rtcp.Packet) error

WritePacketRTCP writes a RTCP packet to the session.

func (*ServerSession) WritePacketRTP

func (ss *ServerSession) WritePacketRTP(medi *media.Media, pkt *rtp.Packet) error

WritePacketRTP writes a RTP packet to the session.

type ServerSessionState

type ServerSessionState int

ServerSessionState is a state of a ServerSession.

const (
	ServerSessionStateInitial ServerSessionState = iota
	ServerSessionStatePrePlay
	ServerSessionStatePlay
	ServerSessionStatePreRecord
	ServerSessionStateRecord
)

states.

func (ServerSessionState) String

func (s ServerSessionState) String() string

String implements fmt.Stringer.

type ServerStream

type ServerStream struct {
	// contains filtered or unexported fields
}

ServerStream represents a data stream. This is in charge of - distributing the stream to each reader - allocating multicast listeners - gathering infos about the stream in order to generate SSRC and RTP-Info

func NewServerStream

func NewServerStream(medias media.Medias) *ServerStream

NewServerStream allocates a ServerStream.

func (*ServerStream) Close

func (st *ServerStream) Close() error

Close closes a ServerStream.

func (*ServerStream) Medias

func (st *ServerStream) Medias() media.Medias

Medias returns the medias of the stream.

func (*ServerStream) WritePacketRTCP

func (st *ServerStream) WritePacketRTCP(medi *media.Media, pkt rtcp.Packet) error

WritePacketRTCP writes a RTCP packet to all the readers of the stream.

func (*ServerStream) WritePacketRTP

func (st *ServerStream) WritePacketRTP(medi *media.Media, pkt *rtp.Packet) error

WritePacketRTP writes a RTP packet to all the readers of the stream.

func (*ServerStream) WritePacketRTPWithNTP

func (st *ServerStream) WritePacketRTPWithNTP(medi *media.Media, pkt *rtp.Packet, ntp time.Time) error

WritePacketRTPWithNTP writes a RTP packet to all the readers of the stream. ntp is the absolute time of the packet, and is needed to generate RTCP sender reports that allows the receiver to reconstruct the absolute time of the packet.

type Transport

type Transport int

Transport is a RTSP transport protocol.

const (
	TransportUDP Transport = iota
	TransportUDPMulticast
	TransportTCP
)

transport protocols.

func (Transport) String

func (t Transport) String() string

String implements fmt.Stringer.

Directories

Path Synopsis
examples
pkg
auth
Package auth contains utilities to perform authentication.
Package auth contains utilities to perform authentication.
base
Package base contains the primitives of the RTSP protocol.
Package base contains the primitives of the RTSP protocol.
bytecounter
Package bytecounter contains a io.ReadWriter wrapper that allows to count read and written bytes.
Package bytecounter contains a io.ReadWriter wrapper that allows to count read and written bytes.
conn
Package conn contains a RTSP connection implementation.
Package conn contains a RTSP connection implementation.
formats
Package formats contains RTP format definitions, decoders and encoders.
Package formats contains RTP format definitions, decoders and encoders.
formats/rtpav1
Package rtpav1 contains a RTP/AV1 decoder and encoder.
Package rtpav1 contains a RTP/AV1 decoder and encoder.
formats/rtph264
Package rtph264 contains a RTP/H264 decoder and encoder.
Package rtph264 contains a RTP/H264 decoder and encoder.
formats/rtph265
Package rtph265 contains a RTP/H265 decoder and encoder.
Package rtph265 contains a RTP/H265 decoder and encoder.
formats/rtplpcm
Package rtplpcm contains a RTP/LPCM decoder and encoder.
Package rtplpcm contains a RTP/LPCM decoder and encoder.
formats/rtpmjpeg
Package rtpmjpeg contains a RTP/M-JPEG decoder and encoder.
Package rtpmjpeg contains a RTP/M-JPEG decoder and encoder.
formats/rtpmjpeg/headers
Package headers contains RTP/M-JPEG headers.
Package headers contains RTP/M-JPEG headers.
formats/rtpmpeg1audio
Package rtpmpeg1audio contains a RTP/MPEG-1/2 Audio decoder and encoder.
Package rtpmpeg1audio contains a RTP/MPEG-1/2 Audio decoder and encoder.
formats/rtpmpeg2audio
Package rtpmpeg2audio contains a RTP/MPEG-1/2 Audio decoder and encoder.
Package rtpmpeg2audio contains a RTP/MPEG-1/2 Audio decoder and encoder.
formats/rtpmpeg4audio
Package rtpmpeg4audio contains a RTP/MPEG-4 Audio decoder and encoder.
Package rtpmpeg4audio contains a RTP/MPEG-4 Audio decoder and encoder.
formats/rtpmpeg4audiogeneric
Package rtpmpeg4audiogeneric contains a RTP/MPEG-4 Audio decoder and encoder.
Package rtpmpeg4audiogeneric contains a RTP/MPEG-4 Audio decoder and encoder.
formats/rtpmpeg4audiolatm
Package rtpmpeg4audiolatm contains a RTP/MPEG-4 Audio decoder and encoder.
Package rtpmpeg4audiolatm contains a RTP/MPEG-4 Audio decoder and encoder.
formats/rtpmpeg4video
Package rtpmpeg4video contains a RTP/MPEG-4 Video decoder and encoder.
Package rtpmpeg4video contains a RTP/MPEG-4 Video decoder and encoder.
formats/rtpsimpleaudio
Package rtpsimpleaudio contains a RTP decoder and encoder for audio codecs that fit in a single packet.
Package rtpsimpleaudio contains a RTP decoder and encoder for audio codecs that fit in a single packet.
formats/rtpvp8
Package rtpvp8 contains a RTP/VP8 decoder and encoder.
Package rtpvp8 contains a RTP/VP8 decoder and encoder.
formats/rtpvp9
Package rtpvp9 contains a RTP/VP9 decoder and encoder.
Package rtpvp9 contains a RTP/VP9 decoder and encoder.
headers
Package headers contains various RTSP headers.
Package headers contains various RTSP headers.
liberrors
Package liberrors contains errors returned by the library.
Package liberrors contains errors returned by the library.
media
Package media contains the media stream definition.
Package media contains the media stream definition.
multibuffer
Package multibuffer contains a buffer with multiple levels.
Package multibuffer contains a buffer with multiple levels.
ringbuffer
Package ringbuffer contains a ring buffer.
Package ringbuffer contains a ring buffer.
rtcpreceiver
Package rtcpreceiver contains a utility to generate RTCP receiver reports.
Package rtcpreceiver contains a utility to generate RTCP receiver reports.
rtcpsender
Package rtcpsender contains a utility to generate RTCP sender reports.
Package rtcpsender contains a utility to generate RTCP sender reports.
rtplossdetector
Package rtplossdetector implements an algorithm that detects lost packets.
Package rtplossdetector implements an algorithm that detects lost packets.
rtpreorderer
Package rtpreorderer implements a filter to reorder incoming RTP packets.
Package rtpreorderer implements a filter to reorder incoming RTP packets.
rtptime
Package rtptime contains a RTP timestamp decoder and encoder.
Package rtptime contains a RTP timestamp decoder and encoder.
sdp
Package sdp contains a SDP encoder/decoder compatible with most RTSP implementations.
Package sdp contains a SDP encoder/decoder compatible with most RTSP implementations.
url
Package url contains the URL structure.
Package url contains the URL structure.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL