Documentation
¶
Overview ¶
Package gortsplib is a RTSP 1.0 library for the Go programming language.
Examples are available at https://github.com/moon-wind/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) 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 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 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 {
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) 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 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 to 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 to 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
|
|
|
client-play
command
|
|
|
client-play-backchannel
command
|
|
|
client-play-format-av1
command
|
|
|
client-play-format-g711
command
|
|
|
client-play-format-g722
command
|
|
|
client-play-format-h264
command
|
|
|
client-play-format-h265
command
|
|
|
client-play-format-lpcm
command
|
|
|
client-play-format-mjpeg
command
|
|
|
client-play-format-mpeg4audio
command
|
|
|
client-play-format-opus
command
|
|
|
client-play-format-vp8
command
|
|
|
client-play-format-vp9
command
|
|
|
client-play-options
command
|
|
|
client-play-pause
command
|
|
|
client-play-timestamp
command
|
|
|
client-play-to-record
command
|
|
|
client-query
command
|
|
|
client-record-format-g711
command
|
|
|
client-record-format-g722
command
|
|
|
client-record-format-h264
command
|
|
|
client-record-format-h265
command
|
|
|
client-record-format-lpcm
command
|
|
|
client-record-format-mjpeg
command
|
|
|
client-record-format-mpeg4audio
command
|
|
|
client-record-format-opus
command
|
|
|
client-record-format-vp8
command
|
|
|
client-record-format-vp9
command
|
|
|
client-record-options
command
|
|
|
client-record-pause
command
|
|
|
proxy
command
|
|
|
server
command
|
|
|
server-h264-save-to-disk
command
|
|
|
server-tls
command
|
|
|
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. |