Documentation ¶
Overview ¶
Package gortsplib is a RTSP 1.0 library for the Go programming language, written for rtsp-simple-server.
Examples are available at https://github.com/eipporko/gortsplib/tree/master/examples
Index ¶
- type Client
- func (c *Client) Announce(u *base.URL, tracks Tracks) (*base.Response, error)
- func (c *Client) Close() error
- func (c *Client) Describe(u *base.URL) (Tracks, *base.URL, *base.Response, error)
- func (c *Client) Options(u *base.URL) (*base.Response, error)
- func (c *Client) Pause() (*base.Response, error)
- func (c *Client) Play(ra *headers.Range) (*base.Response, error)
- func (c *Client) Record() (*base.Response, error)
- func (c *Client) Seek(ra *headers.Range) (*base.Response, error)
- func (c *Client) Setup(forPlay bool, track Track, baseURL *base.URL, rtpPort int, rtcpPort int) (*base.Response, error)
- func (c *Client) SetupAndPlay(tracks Tracks, baseURL *base.URL) error
- func (c *Client) Start(scheme string, host string) error
- func (c *Client) StartPublishing(address string, tracks Tracks) error
- func (c *Client) StartReading(address string) error
- func (c *Client) StartReadingAndWait(address string) error
- func (c *Client) Tracks() Tracks
- func (c *Client) Wait() error
- func (c *Client) WritePacketRTCP(trackID int, payload []byte) error
- func (c *Client) WritePacketRTP(trackID int, payload []byte) error
- type Server
- type ServerConn
- type ServerHandler
- type ServerHandlerOnAnnounce
- type ServerHandlerOnAnnounceCtx
- type ServerHandlerOnConnClose
- type ServerHandlerOnConnCloseCtx
- type ServerHandlerOnConnOpen
- type ServerHandlerOnConnOpenCtx
- type ServerHandlerOnDescribe
- type ServerHandlerOnDescribeCtx
- type ServerHandlerOnGetParameter
- type ServerHandlerOnGetParameterCtx
- type ServerHandlerOnPacketRTCP
- type ServerHandlerOnPacketRTCPCtx
- type ServerHandlerOnPacketRTP
- type ServerHandlerOnPacketRTPCtx
- type ServerHandlerOnPause
- type ServerHandlerOnPauseCtx
- type ServerHandlerOnPlay
- type ServerHandlerOnPlayCtx
- type ServerHandlerOnRecord
- type ServerHandlerOnRecordCtx
- type ServerHandlerOnRequest
- type ServerHandlerOnResponse
- type ServerHandlerOnSessionClose
- type ServerHandlerOnSessionCloseCtx
- type ServerHandlerOnSessionOpen
- type ServerHandlerOnSessionOpenCtx
- type ServerHandlerOnSetParameter
- type ServerHandlerOnSetParameterCtx
- type ServerHandlerOnSetup
- type ServerHandlerOnSetupCtx
- type ServerSession
- func (ss *ServerSession) AnnouncedTracks() []ServerSessionAnnouncedTrack
- func (ss *ServerSession) Close() error
- func (ss *ServerSession) SetuppedTracks() map[int]ServerSessionSetuppedTrack
- func (ss *ServerSession) SetuppedTransport() *Transport
- func (ss *ServerSession) State() ServerSessionState
- func (ss *ServerSession) WritePacketRTCP(trackID int, payload []byte)
- func (ss *ServerSession) WritePacketRTP(trackID int, payload []byte)
- type ServerSessionAnnouncedTrack
- type ServerSessionSetuppedTrack
- type ServerSessionState
- type ServerStream
- type Track
- type TrackAAC
- type TrackGeneric
- type TrackH264
- type TrackOpus
- type Tracks
- type Transport
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct { // // callbacks // // called before every request. OnRequest func(*base.Request) // called after every response. OnResponse func(*base.Response) // called when a RTP packet arrives. OnPacketRTP func(int, []byte) // called when a RTCP packet arrives. OnPacketRTCP func(int, []byte) // // RTSP parameters // // 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 // disable being redirected to other servers, that can happen during Describe(). // It defaults to false. RedirectDisable bool // enable communication with servers which don't provide server ports or use // different server ports than the ones announced. // This can be a security issue. // It defaults to false. AnyPortEnable bool // the stream transport (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. // 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 1. ReadBufferCount int // read buffer size. // This must be touched only when the server reports errors about buffer sizes. // It defaults to 2048. ReadBufferSize int // // system functions // // 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) // contains filtered or unexported fields }
Client is a RTSP client.
func (*Client) Pause ¶
Pause writes a PAUSE request and reads a Response. This can be called only after Play() or Record().
func (*Client) Play ¶
Play writes a PLAY request and reads a Response. This can be called only after Setup().
func (*Client) Record ¶
Record writes a RECORD request and reads a Response. This can be called only after Announce() and Setup().
func (*Client) Setup ¶
func (c *Client) Setup( forPlay bool, track Track, baseURL *base.URL, rtpPort int, rtcpPort int) (*base.Response, error)
Setup writes a SETUP request and reads a Response. rtpPort and rtcpPort are used only if protocol is UDP. if rtpPort and rtcpPort are zero, they are chosen automatically.
func (*Client) SetupAndPlay ¶
SetupAndPlay setups and play the given tracks.
func (*Client) StartPublishing ¶
StartPublishing connects to the address and starts publishing the tracks.
func (*Client) StartReading ¶
StartReading connects to the address and starts reading all tracks.
func (*Client) StartReadingAndWait ¶
StartReadingAndWait connects to the address, starts reading all tracks and waits until a read error.
func (*Client) Wait ¶
Wait waits until all client resources are closed. This can happen when a fatal error occurs or when Close() is called.
func (*Client) WritePacketRTCP ¶
WritePacketRTCP writes a RTCP packet.
type Server ¶
type Server struct { // // handler // // an handler to handle server events. Handler ServerHandler // // RTSP parameters // // timeout of read operations. // It defaults to 10 seconds ReadTimeout time.Duration // timeout of write operations. // It defaults to 10 seconds WriteTimeout time.Duration // the RTSP address of the server, to accept connections and send and receive // packets with the TCP transport. RTSPAddress string // a TLS configuration to accept TLS (RTSPS) connections. TLSConfig *tls.Config // 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 // 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 high when using UDP. // It defaults to 512 ReadBufferCount int // read buffer size. // This must be touched only when the server reports errors about buffer sizes. // It defaults to 2048. ReadBufferSize int // // system functions // // 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) StartAndWait ¶
StartAndWait starts the server and waits until a fatal error.
type ServerConn ¶
type ServerConn struct {
// contains filtered or unexported fields
}
ServerConn is a server-side RTSP connection.
func (*ServerConn) NetConn ¶
func (sc *ServerConn) NetConn() net.Conn
NetConn returns the underlying net.Conn.
type ServerHandler ¶
type ServerHandler interface{}
ServerHandler is the interface implemented by all the server handlers.
type ServerHandlerOnAnnounce ¶
type ServerHandlerOnAnnounce interface {
OnAnnounce(*ServerHandlerOnAnnounceCtx) (*base.Response, error)
}
ServerHandlerOnAnnounce can be implemented by a ServerHandler.
type ServerHandlerOnAnnounceCtx ¶
type ServerHandlerOnAnnounceCtx struct { Server *Server Session *ServerSession Conn *ServerConn Req *base.Request Path string Query string Tracks Tracks }
ServerHandlerOnAnnounceCtx is the context of an ANNOUNCE request.
type ServerHandlerOnConnClose ¶
type ServerHandlerOnConnClose interface {
OnConnClose(*ServerHandlerOnConnCloseCtx)
}
ServerHandlerOnConnClose can be implemented by a ServerHandler.
type ServerHandlerOnConnCloseCtx ¶
type ServerHandlerOnConnCloseCtx struct { Conn *ServerConn Error error }
ServerHandlerOnConnCloseCtx is the context of a connection closure.
type ServerHandlerOnConnOpen ¶
type ServerHandlerOnConnOpen interface {
OnConnOpen(*ServerHandlerOnConnOpenCtx)
}
ServerHandlerOnConnOpen can be implemented by a ServerHandler.
type ServerHandlerOnConnOpenCtx ¶
type ServerHandlerOnConnOpenCtx struct {
Conn *ServerConn
}
ServerHandlerOnConnOpenCtx is the context of a connection opening.
type ServerHandlerOnDescribe ¶
type ServerHandlerOnDescribe interface {
OnDescribe(*ServerHandlerOnDescribeCtx) (*base.Response, *ServerStream, error)
}
ServerHandlerOnDescribe can be implemented by a ServerHandler.
type ServerHandlerOnDescribeCtx ¶
type ServerHandlerOnDescribeCtx struct { Conn *ServerConn Req *base.Request Path string Query string }
ServerHandlerOnDescribeCtx is the context of a DESCRIBE request.
type ServerHandlerOnGetParameter ¶
type ServerHandlerOnGetParameter interface {
OnGetParameter(*ServerHandlerOnGetParameterCtx) (*base.Response, error)
}
ServerHandlerOnGetParameter can be implemented by a ServerHandler.
type ServerHandlerOnGetParameterCtx ¶
type ServerHandlerOnGetParameterCtx struct { Session *ServerSession Conn *ServerConn Req *base.Request Path string Query string }
ServerHandlerOnGetParameterCtx is the context of a GET_PARAMETER request.
type ServerHandlerOnPacketRTCP ¶
type ServerHandlerOnPacketRTCP interface {
OnPacketRTCP(*ServerHandlerOnPacketRTCPCtx)
}
ServerHandlerOnPacketRTCP can be implemented by a ServerHandler.
type ServerHandlerOnPacketRTCPCtx ¶
type ServerHandlerOnPacketRTCPCtx struct { Session *ServerSession TrackID int Payload []byte }
ServerHandlerOnPacketRTCPCtx is the context of a RTCP packet.
type ServerHandlerOnPacketRTP ¶
type ServerHandlerOnPacketRTP interface {
OnPacketRTP(*ServerHandlerOnPacketRTPCtx)
}
ServerHandlerOnPacketRTP can be implemented by a ServerHandler.
type ServerHandlerOnPacketRTPCtx ¶
type ServerHandlerOnPacketRTPCtx struct { Session *ServerSession TrackID int Payload []byte }
ServerHandlerOnPacketRTPCtx is the context of a RTP packet.
type ServerHandlerOnPause ¶
type ServerHandlerOnPause interface {
OnPause(*ServerHandlerOnPauseCtx) (*base.Response, error)
}
ServerHandlerOnPause can be implemented by a ServerHandler.
type ServerHandlerOnPauseCtx ¶
type ServerHandlerOnPauseCtx struct { Session *ServerSession Conn *ServerConn Req *base.Request Path string Query string }
ServerHandlerOnPauseCtx is the context of a PAUSE request.
type ServerHandlerOnPlay ¶
type ServerHandlerOnPlay interface {
OnPlay(*ServerHandlerOnPlayCtx) (*base.Response, error)
}
ServerHandlerOnPlay can be implemented by a ServerHandler.
type ServerHandlerOnPlayCtx ¶
type ServerHandlerOnPlayCtx struct { Session *ServerSession Conn *ServerConn Req *base.Request Path string Query string }
ServerHandlerOnPlayCtx is the context of a PLAY request.
type ServerHandlerOnRecord ¶
type ServerHandlerOnRecord interface {
OnRecord(*ServerHandlerOnRecordCtx) (*base.Response, error)
}
ServerHandlerOnRecord can be implemented by a ServerHandler.
type ServerHandlerOnRecordCtx ¶
type ServerHandlerOnRecordCtx struct { Session *ServerSession Conn *ServerConn Req *base.Request Path string Query string }
ServerHandlerOnRecordCtx is the context of a RECORD request.
type ServerHandlerOnRequest ¶
type ServerHandlerOnRequest interface {
OnRequest(*ServerConn, *base.Request)
}
ServerHandlerOnRequest can be implemented by a ServerHandler.
type ServerHandlerOnResponse ¶
type ServerHandlerOnResponse interface {
OnResponse(*ServerConn, *base.Response)
}
ServerHandlerOnResponse can be implemented by a ServerHandler.
type ServerHandlerOnSessionClose ¶
type ServerHandlerOnSessionClose interface {
OnSessionClose(*ServerHandlerOnSessionCloseCtx)
}
ServerHandlerOnSessionClose can be implemented by a ServerHandler.
type ServerHandlerOnSessionCloseCtx ¶
type ServerHandlerOnSessionCloseCtx struct { Session *ServerSession Error error }
ServerHandlerOnSessionCloseCtx is the context of a session closure.
type ServerHandlerOnSessionOpen ¶
type ServerHandlerOnSessionOpen interface {
OnSessionOpen(*ServerHandlerOnSessionOpenCtx)
}
ServerHandlerOnSessionOpen can be implemented by a ServerHandler.
type ServerHandlerOnSessionOpenCtx ¶
type ServerHandlerOnSessionOpenCtx struct { Session *ServerSession Conn *ServerConn }
ServerHandlerOnSessionOpenCtx is the context of a session opening.
type ServerHandlerOnSetParameter ¶
type ServerHandlerOnSetParameter interface {
OnSetParameter(*ServerHandlerOnSetParameterCtx) (*base.Response, error)
}
ServerHandlerOnSetParameter can be implemented by a ServerHandler.
type ServerHandlerOnSetParameterCtx ¶
type ServerHandlerOnSetParameterCtx struct { Conn *ServerConn Req *base.Request Path string Query string }
ServerHandlerOnSetParameterCtx is the context of a SET_PARAMETER request.
type ServerHandlerOnSetup ¶
type ServerHandlerOnSetup interface { // 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 Req *base.Request Path string Query string TrackID int Transport Transport }
ServerHandlerOnSetupCtx is the context of a OPTIONS request.
type ServerSession ¶
type ServerSession struct {
// contains filtered or unexported fields
}
ServerSession is a server-side RTSP session.
func (*ServerSession) AnnouncedTracks ¶
func (ss *ServerSession) AnnouncedTracks() []ServerSessionAnnouncedTrack
AnnouncedTracks returns the announced tracks.
func (*ServerSession) Close ¶
func (ss *ServerSession) Close() error
Close closes the ServerSession.
func (*ServerSession) SetuppedTracks ¶
func (ss *ServerSession) SetuppedTracks() map[int]ServerSessionSetuppedTrack
SetuppedTracks returns the setupped tracks.
func (*ServerSession) SetuppedTransport ¶
func (ss *ServerSession) SetuppedTransport() *Transport
SetuppedTransport returns the transport of the setupped tracks.
func (*ServerSession) State ¶
func (ss *ServerSession) State() ServerSessionState
State returns the state of the session.
func (*ServerSession) WritePacketRTCP ¶
func (ss *ServerSession) WritePacketRTCP(trackID int, payload []byte)
WritePacketRTCP writes a RTCP packet to the session.
func (*ServerSession) WritePacketRTP ¶
func (ss *ServerSession) WritePacketRTP(trackID int, payload []byte)
WritePacketRTP writes a RTP packet to the session.
type ServerSessionAnnouncedTrack ¶
type ServerSessionAnnouncedTrack struct {
// contains filtered or unexported fields
}
ServerSessionAnnouncedTrack is an announced track of a ServerSession.
type ServerSessionSetuppedTrack ¶
type ServerSessionSetuppedTrack struct {
// contains filtered or unexported fields
}
ServerSessionSetuppedTrack is a setupped track of a ServerSession.
type ServerSessionState ¶
type ServerSessionState int
ServerSessionState is a state of a ServerSession.
const ( ServerSessionStateInitial ServerSessionState = iota ServerSessionStatePreRead ServerSessionStateRead ServerSessionStatePrePublish ServerSessionStatePublish )
standard 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 single stream. This is in charge of - distributing the stream to each reader - allocating multicast listeners - gathering infos about the stream to generate SSRC and RTP-Info
func NewServerStream ¶
func NewServerStream(tracks Tracks) *ServerStream
NewServerStream allocates a ServerStream.
func (*ServerStream) Tracks ¶
func (st *ServerStream) Tracks() Tracks
Tracks returns the tracks of the stream.
func (*ServerStream) WritePacketRTCP ¶
func (st *ServerStream) WritePacketRTCP(trackID int, payload []byte)
WritePacketRTCP writes a RTCP packet to all the readers of the stream.
func (*ServerStream) WritePacketRTP ¶
func (st *ServerStream) WritePacketRTP(trackID int, payload []byte)
WritePacketRTP writes a RTP packet to all the readers of the stream.
type Track ¶
type Track interface { // ClockRate returns the track clock rate. ClockRate() int // contains filtered or unexported methods }
Track is a RTSP track.
type TrackAAC ¶
type TrackAAC struct {
// contains filtered or unexported fields
}
TrackAAC is an AAC track.
func NewTrackAAC ¶
func NewTrackAAC(payloadType uint8, typ int, sampleRate int, channelCount int, aotSpecificConfig []byte) (*TrackAAC, error)
NewTrackAAC allocates a TrackAAC.
func (*TrackAAC) AOTSpecificConfig ¶
AOTSpecificConfig returns the track AOT specific config.
func (*TrackAAC) ChannelCount ¶
ChannelCount returns the track channel count.
type TrackGeneric ¶
type TrackGeneric struct {
// contains filtered or unexported fields
}
TrackGeneric is a generic track.
func (*TrackGeneric) ClockRate ¶
func (t *TrackGeneric) ClockRate() int
ClockRate returns the track clock rate.
type TrackH264 ¶
type TrackH264 struct {
// contains filtered or unexported fields
}
TrackH264 is a H264 track.
func NewTrackH264 ¶
NewTrackH264 allocates a TrackH264.
type TrackOpus ¶
type TrackOpus struct {
// contains filtered or unexported fields
}
TrackOpus is a Opus track.
func NewTrackOpus ¶
NewTrackOpus allocates a TrackOpus.
type Tracks ¶
type Tracks []Track
Tracks is a list of tracks.
func ReadTracks ¶
ReadTracks decodes tracks from the SDP format.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
examples
|
|
pkg
|
|
aac
Package aac contains utilities to work with the MPEG-AAC codec.
|
Package aac contains utilities to work with the MPEG-AAC codec. |
auth
Package auth contains utilities to perform authentication.
|
Package auth contains utilities to perform authentication. |
base
Package base contains the base elements of the RTSP protocol.
|
Package base contains the base elements of the RTSP protocol. |
h264
Package h264 contains utilities to work with the H264 codec.
|
Package h264 contains utilities to work with the H264 codec. |
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. |
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. |
rtpaac
Package rtpaac contains a RTP/AAC decoder and encoder.
|
Package rtpaac contains a RTP/AAC decoder and encoder. |
rtph264
Package rtph264 contains a RTP/H264 decoder and encoder.
|
Package rtph264 contains a RTP/H264 decoder and encoder. |
rtptimedec
Package rtptimedec contains a RTP timestamp decoder.
|
Package rtptimedec contains a RTP timestamp decoder. |
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. |