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 ¶
- type Client
- func (c *Client) Announce(u *base.URL, desc *description.Session) (*base.Response, error)
- func (c *Client) Close()
- func (c *Client) Describe(u *base.URL) (*description.Session, *base.Response, error)
- func (c *Client) OnPacketRTCP(medi *description.Media, cb OnPacketRTCPFunc)
- func (c *Client) OnPacketRTCPAny(cb OnPacketRTCPAnyFunc)
- func (c *Client) OnPacketRTP(medi *description.Media, forma format.Format, cb OnPacketRTPFunc)
- func (c *Client) OnPacketRTPAny(cb OnPacketRTPAnyFunc)
- func (c *Client) Options(u *base.URL) (*base.Response, error)
- func (c *Client) PacketNTP(medi *description.Media, pkt *rtp.Packet) (time.Time, bool)
- func (c *Client) PacketPTS(medi *description.Media, pkt *rtp.Packet) (time.Duration, bool)
- 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(baseURL *base.URL, media *description.Media, rtpPort int, rtcpPort int) (*base.Response, error)
- func (c *Client) SetupAll(baseURL *base.URL, medias []*description.Media) error
- func (c *Client) Start(scheme string, host string) error
- func (c *Client) StartRecording(address string, desc *description.Session) error
- func (c *Client) Wait() error
- func (c *Client) WritePacketRTCP(medi *description.Media, pkt rtcp.Packet) error
- func (c *Client) WritePacketRTP(medi *description.Media, pkt *rtp.Packet) error
- func (c *Client) WritePacketRTPWithNTP(medi *description.Media, pkt *rtp.Packet, ntp time.Time) error
- type ClientOnDecodeErrorFunc
- type ClientOnPacketLostFunc
- type ClientOnRequestFunc
- type ClientOnResponseFunc
- type ClientOnTransportSwitchFunc
- type OnPacketRTCPAnyFunc
- type OnPacketRTCPFunc
- type OnPacketRTPAnyFunc
- type OnPacketRTPFunc
- type Server
- type ServerConn
- type ServerHandler
- type ServerHandlerOnAnnounce
- type ServerHandlerOnAnnounceCtx
- type ServerHandlerOnConnClose
- type ServerHandlerOnConnCloseCtx
- type ServerHandlerOnConnOpen
- type ServerHandlerOnConnOpenCtx
- type ServerHandlerOnDecodeError
- type ServerHandlerOnDecodeErrorCtx
- type ServerHandlerOnDescribe
- type ServerHandlerOnDescribeCtx
- type ServerHandlerOnGetParameter
- type ServerHandlerOnGetParameterCtx
- type ServerHandlerOnPacketLost
- type ServerHandlerOnPacketLostCtx
- 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 ServerHandlerOnStreamWriteError
- type ServerHandlerOnStreamWriteErrorCtx
- type ServerSession
- func (ss *ServerSession) AnnouncedDescription() *description.Session
- func (ss *ServerSession) BytesReceived() uint64
- func (ss *ServerSession) BytesSent() uint64
- func (ss *ServerSession) Close()
- func (ss *ServerSession) ID() string
- func (ss *ServerSession) OnPacketRTCP(medi *description.Media, cb OnPacketRTCPFunc)
- func (ss *ServerSession) OnPacketRTCPAny(cb OnPacketRTCPAnyFunc)
- func (ss *ServerSession) OnPacketRTP(medi *description.Media, forma format.Format, cb OnPacketRTPFunc)
- func (ss *ServerSession) OnPacketRTPAny(cb OnPacketRTPAnyFunc)
- func (ss *ServerSession) PacketNTP(medi *description.Media, pkt *rtp.Packet) (time.Time, bool)
- func (ss *ServerSession) PacketPTS(medi *description.Media, pkt *rtp.Packet) (time.Duration, bool)
- func (ss *ServerSession) SetUserData(v interface{})
- func (ss *ServerSession) SetuppedMedias() []*description.Media
- func (ss *ServerSession) SetuppedPath() string
- func (ss *ServerSession) SetuppedQuery() string
- func (ss *ServerSession) SetuppedStream() *ServerStream
- func (ss *ServerSession) SetuppedTransport() *Transport
- func (ss *ServerSession) State() ServerSessionState
- func (ss *ServerSession) UserData() interface{}
- func (ss *ServerSession) WritePacketRTCP(medi *description.Media, pkt rtcp.Packet) error
- func (ss *ServerSession) WritePacketRTP(medi *description.Media, pkt *rtp.Packet) error
- type ServerSessionState
- type ServerStream
- func (st *ServerStream) BytesSent() uint64
- func (st *ServerStream) Close()
- func (st *ServerStream) Description() *description.Session
- func (st *ServerStream) WritePacketRTCP(medi *description.Media, pkt rtcp.Packet) error
- func (st *ServerStream) WritePacketRTP(medi *description.Media, pkt *rtp.Packet) error
- func (st *ServerStream) WritePacketRTPWithNTP(medi *description.Media, pkt *rtp.Packet, ntp time.Time) error
- type Transport
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 // Size of the queue of outgoing packets. // It defaults to 256. WriteQueueSize int // maximum size of outgoing RTP / RTCP packets. // This must be less than the UDP MTU (1472 bytes). // It defaults to 1472. MaxPacketSize int // user agent header. // It defaults to "gortsplib" UserAgent string // disable automatic RTCP sender reports. DisableRTCPSenderReports bool // explicitly request back channels to the server. RequestBackChannels bool // pointer to a variable that stores received bytes. BytesReceived *uint64 // pointer to a variable that stores sent bytes. BytesSent *uint64 // // 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 when sending a request to the server. OnRequest ClientOnRequestFunc // called when receiving a response from the server. OnResponse ClientOnResponseFunc // called when receiving a request from the server. OnServerRequest ClientOnRequestFunc // called when sending a response to the server. OnServerResponse 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 // contains filtered or unexported fields }
Client is a RTSP client.
func (*Client) Close ¶
func (c *Client) Close()
Close closes all client resources and waits for them to close.
func (*Client) OnPacketRTCP ¶
func (c *Client) OnPacketRTCP(medi *description.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 *description.Media, forma format.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) PacketNTP ¶
PacketNTP returns the NTP timestamp of an incoming RTP packet. The NTP timestamp is computed from RTCP sender reports.
func (*Client) PacketPTS ¶
PacketPTS returns the PTS of an incoming RTP packet. It is computed by decoding the packet timestamp and sychronizing it with other tracks.
func (*Client) Pause ¶
Pause sends a PAUSE request. This can be called only after Play() or Record().
func (*Client) Record ¶
Record sends a RECORD request. This can be called only after Announce() and Setup().
func (*Client) Setup ¶
func (c *Client) Setup( baseURL *base.URL, media *description.Media, rtpPort int, rtcpPort int, ) (*base.Response, error)
Setup sends a SETUP request. rtpPort and rtcpPort are used only if transport is UDP. if rtpPort and rtcpPort are zero, they are chosen automatically.
func (*Client) StartRecording ¶
func (c *Client) StartRecording(address string, desc *description.Session) error
StartRecording connects to the address and starts publishing given media.
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 to the server.
func (*Client) WritePacketRTP ¶
WritePacketRTP writes a RTP packet to the server.
func (*Client) WritePacketRTPWithNTP ¶
func (c *Client) WritePacketRTPWithNTP(medi *description.Media, pkt *rtp.Packet, ntp time.Time) error
WritePacketRTPWithNTP writes a RTP packet to the server. ntp is the absolute time of the packet, and is sent with periodic RTCP sender reports.
type ClientOnDecodeErrorFunc ¶
type ClientOnDecodeErrorFunc func(err error)
ClientOnDecodeErrorFunc is the prototype of Client.OnDecodeError.
type ClientOnPacketLostFunc ¶
type ClientOnPacketLostFunc func(err error)
ClientOnPacketLostFunc is the prototype of Client.OnPacketLost.
type ClientOnRequestFunc ¶
ClientOnRequestFunc is the prototype of Client.OnRequest.
type ClientOnResponseFunc ¶
ClientOnResponseFunc is the prototype of Client.OnResponse.
type ClientOnTransportSwitchFunc ¶
type ClientOnTransportSwitchFunc func(err error)
ClientOnTransportSwitchFunc is the prototype of Client.OnTransportSwitch.
type OnPacketRTCPAnyFunc ¶
type OnPacketRTCPAnyFunc func(*description.Media, rtcp.Packet)
OnPacketRTCPAnyFunc is the prototype of the callback passed to OnPacketRTCPAny().
type OnPacketRTCPFunc ¶
OnPacketRTCPFunc is the prototype of the callback passed to OnPacketRTCP().
type OnPacketRTPAnyFunc ¶
OnPacketRTPAnyFunc is the prototype of the callback passed to OnPacketRTP(Any).
type OnPacketRTPFunc ¶
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 // Size of the queue of outgoing packets. // It defaults to 256. WriteQueueSize int // maximum size of outgoing RTP / RTCP packets. // This must be less than the UDP MTU (1472 bytes). // It defaults to 1472. MaxPacketSize 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()
Close closes all the server resources and waits for them to close.
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) 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) 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 with the connection.
func (*ServerConn) UserData ¶
func (sc *ServerConn) UserData() interface{}
UserData returns some user data associated with 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 { Session *ServerSession Conn *ServerConn Request *base.Request Path string Query string Description *description.Session }
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 ¶
type ServerHandlerOnDecodeError interface { // called when a non-fatal decode error occurs. OnDecodeError(*ServerHandlerOnDecodeErrorCtx) }
ServerHandlerOnDecodeError can be implemented by a ServerHandler.
type ServerHandlerOnDecodeErrorCtx ¶
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 ¶
type ServerHandlerOnPacketLost interface { // called when the server detects lost packets. OnPacketLost(*ServerHandlerOnPacketLostCtx) }
ServerHandlerOnPacketLost can be implemented by a ServerHandler.
type ServerHandlerOnPacketLostCtx ¶
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 when receiving a request from a connection. OnRequest(*ServerConn, *base.Request) }
ServerHandlerOnRequest can be implemented by a ServerHandler.
type ServerHandlerOnResponse ¶
type ServerHandlerOnResponse interface { // called when sending a response to a connection. 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 { Session *ServerSession Conn *ServerConn Request *base.Request Path string Query string Transport Transport }
ServerHandlerOnSetupCtx is the context of OnSetup.
type ServerHandlerOnStreamWriteError ¶
type ServerHandlerOnStreamWriteError interface { // called when a ServerStream is unable to write packets to a session. OnStreamWriteError(*ServerHandlerOnStreamWriteErrorCtx) }
ServerHandlerOnStreamWriteError can be implemented by a ServerHandler.
type ServerHandlerOnStreamWriteErrorCtx ¶
type ServerHandlerOnStreamWriteErrorCtx struct { Session *ServerSession Error error }
ServerHandlerOnStreamWriteErrorCtx is the context of OnStreamWriteError.
type ServerSession ¶
type ServerSession struct {
// contains filtered or unexported fields
}
ServerSession is a server-side RTSP session.
func (*ServerSession) AnnouncedDescription ¶
func (ss *ServerSession) AnnouncedDescription() *description.Session
AnnouncedDescription returns the announced stream description.
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) ID ¶
func (ss *ServerSession) ID() string
func (*ServerSession) OnPacketRTCP ¶
func (ss *ServerSession) OnPacketRTCP(medi *description.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 *description.Media, forma format.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) PacketNTP ¶
func (ss *ServerSession) PacketNTP(medi *description.Media, pkt *rtp.Packet) (time.Time, bool)
PacketNTP returns the NTP timestamp of an incoming RTP packet. The NTP timestamp is computed from RTCP sender reports.
func (*ServerSession) PacketPTS ¶
func (ss *ServerSession) PacketPTS(medi *description.Media, pkt *rtp.Packet) (time.Duration, bool)
PacketPTS returns the PTS of an incoming RTP packet. It is computed by decoding the packet timestamp and sychronizing it with other tracks.
func (*ServerSession) SetUserData ¶
func (ss *ServerSession) SetUserData(v interface{})
SetUserData sets some user data associated with the session.
func (*ServerSession) SetuppedMedias ¶
func (ss *ServerSession) SetuppedMedias() []*description.Media
SetuppedMedias returns the setupped medias.
func (*ServerSession) SetuppedPath ¶
func (ss *ServerSession) SetuppedPath() string
SetuppedPath returns the path sent during SETUP or ANNOUNCE.
func (*ServerSession) SetuppedQuery ¶
func (ss *ServerSession) SetuppedQuery() string
SetuppedQuery returns the query sent during SETUP or ANNOUNCE.
func (*ServerSession) SetuppedStream ¶
func (ss *ServerSession) SetuppedStream() *ServerStream
SetuppedStream returns the stream associated with the session.
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 with the session.
func (*ServerSession) WritePacketRTCP ¶
func (ss *ServerSession) WritePacketRTCP(medi *description.Media, pkt rtcp.Packet) error
WritePacketRTCP writes a RTCP packet to the session.
func (*ServerSession) WritePacketRTP ¶
func (ss *ServerSession) WritePacketRTP(medi *description.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(s *Server, desc *description.Session) *ServerStream
NewServerStream allocates a ServerStream.
func (*ServerStream) BytesSent ¶
func (st *ServerStream) BytesSent() uint64
BytesSent returns the number of written bytes.
func (*ServerStream) Description ¶
func (st *ServerStream) Description() *description.Session
Description returns the description of the stream.
func (*ServerStream) WritePacketRTCP ¶
func (st *ServerStream) WritePacketRTCP(medi *description.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 *description.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 *description.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 sent with periodic RTCP sender reports.
Source Files ¶
- async_processor.go
- client.go
- client_format.go
- client_media.go
- client_reader.go
- client_udp_listener.go
- constants.go
- empty_timer.go
- restrict_network.go
- server.go
- server_conn.go
- server_conn_reader.go
- server_handler.go
- server_multicast_writer.go
- server_session.go
- server_session_format.go
- server_session_media.go
- server_stream.go
- server_stream_format.go
- server_stream_media.go
- server_tcp_listener.go
- server_udp_listener.go
- transport.go
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. |
description
Package description contains objects to describe streams.
|
Package description contains objects to describe streams. |
format
Package format contains RTP format definitions, decoders and encoders.
|
Package format contains RTP format definitions, decoders and encoders. |
format/rtpac3
Package rtpac3 contains a RTP/AC-3 decoder and encoder.
|
Package rtpac3 contains a RTP/AC-3 decoder and encoder. |
format/rtpav1
Package rtpav1 contains a RTP/AV1 decoder and encoder.
|
Package rtpav1 contains a RTP/AV1 decoder and encoder. |
format/rtph264
Package rtph264 contains a RTP/H264 decoder and encoder.
|
Package rtph264 contains a RTP/H264 decoder and encoder. |
format/rtph265
Package rtph265 contains a RTP/H265 decoder and encoder.
|
Package rtph265 contains a RTP/H265 decoder and encoder. |
format/rtplpcm
Package rtplpcm contains a RTP/LPCM decoder and encoder.
|
Package rtplpcm contains a RTP/LPCM decoder and encoder. |
format/rtpmjpeg
Package rtpmjpeg contains a RTP/M-JPEG decoder and encoder.
|
Package rtpmjpeg contains a RTP/M-JPEG decoder and encoder. |
format/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. |
format/rtpmpeg1video
Package rtpmpeg1video contains a RTP/MPEG-1/2 Video decoder and encoder.
|
Package rtpmpeg1video contains a RTP/MPEG-1/2 Video decoder and encoder. |
format/rtpmpeg4audio
Package rtpmpeg4audio contains a RTP/MPEG-4 Audio decoder and encoder.
|
Package rtpmpeg4audio contains a RTP/MPEG-4 Audio decoder and encoder. |
format/rtpmpeg4video
Package rtpmpeg4video contains a RTP/MPEG-4 Video decoder and encoder.
|
Package rtpmpeg4video contains a RTP/MPEG-4 Video decoder and encoder. |
format/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. |
format/rtpvp8
Package rtpvp8 contains a RTP/VP8 decoder and encoder.
|
Package rtpvp8 contains a RTP/VP8 decoder and encoder. |
format/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. |
multibuffer
Package multibuffer contains a buffer with multiple levels.
|
Package multibuffer contains a buffer with multiple levels. |
multicast
Package multicast contains multicast connections.
|
Package multicast contains multicast connections. |
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 time decoder and encoder.
|
Package rtptime contains a time 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 is deprecated.
|
Package url is deprecated. |