Documentation
¶
Index ¶
- type Bridge
- type BridgeManager
- type EntityLookup
- type Handler
- type ImageProxyHandler
- type Peer
- type RTSPServer
- func (rs *RTSPServer) Close()
- func (rs *RTSPServer) OnConnOpen(ctx *gortsplib.ServerHandlerOnConnOpenCtx)
- func (rs *RTSPServer) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error)
- func (rs *RTSPServer) OnPlay(_ *gortsplib.ServerHandlerOnPlayCtx) (*base.Response, error)
- func (rs *RTSPServer) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionCloseCtx)
- func (rs *RTSPServer) OnSetup(ctx *gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error)
- func (rs *RTSPServer) Start(ln net.Listener) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Bridge ¶
type Bridge struct {
// contains filtered or unexported fields
}
Bridge manages a single video source and fans out RTP packets to multiple consumers (WebRTC peers, RTSP server streams, etc.) via a shared track.
func (*Bridge) AddPeer ¶
AddPeer creates a new WebRTC PeerConnection, adds the shared video track, performs SDP negotiation, and returns the SDP answer.
func (*Bridge) OnRTP ¶
OnRTP registers a callback that receives every RTP packet written to this bridge. Returns a key that can be passed to OffRTP to unregister.
type BridgeManager ¶
type BridgeManager struct {
// contains filtered or unexported fields
}
BridgeManager is the registry of active bridges keyed by "entityId/cameraIndex".
func NewBridgeManager ¶
func NewBridgeManager() *BridgeManager
func (*BridgeManager) GetOrCreate ¶
func (bm *BridgeManager) GetOrCreate(key, sourceURL string) (*Bridge, error)
GetOrCreate returns an existing bridge or creates a new one. Supports rtsp://, rtsps://, and v4l2:// source URLs.
func (*BridgeManager) SetupWebRTCMux ¶
func (bm *BridgeManager) SetupWebRTCMux(conn net.PacketConn)
SetupWebRTCMux configures a shared WebRTC API that multiplexes all ICE UDP traffic through the given listener. This allows WebRTC to work with a single open port in the firewall.
type EntityLookup ¶
type EntityLookup interface {
GetHead(id string) *pb.Entity
// GetSourceURL returns the original source URL for a camera stream
// before the MediaTransformer rewrote it to a proxy URL.
GetSourceURL(entityID string, streamIndex int) string
}
EntityLookup provides entity access without importing the engine package.
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler is the HTTP handler for WHEP requests.
func NewHandler ¶
func NewHandler(lookup EntityLookup, bridges *BridgeManager) *Handler
type ImageProxyHandler ¶
type ImageProxyHandler struct {
// contains filtered or unexported fields
}
ImageProxyHandler serves camera images by proxying the entity's image stream URL.
func NewImageProxyHandler ¶
func NewImageProxyHandler(lookup EntityLookup) *ImageProxyHandler
func (*ImageProxyHandler) ServeHTTP ¶
func (h *ImageProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
type Peer ¶
type Peer struct {
// contains filtered or unexported fields
}
Peer represents a single WHEP viewer connected to a Bridge.
type RTSPServer ¶
type RTSPServer struct {
// contains filtered or unexported fields
}
RTSPServer relays camera streams from entities as an RTSP server. Clients connect to rtsp://host:port/media/rtsp/{entityId}/{cameraIndex}. Supports both RTSP sources (direct relay) and HTTP MJPEG sources (fetches MJPEG, packetizes as RTP/JPEG).
func NewRTSPServer ¶
func NewRTSPServer(lookup EntityLookup, bridges *BridgeManager, isRemoteAllowed func() bool) *RTSPServer
NewRTSPServer creates an RTSP relay server. isRemoteAllowed is called on each connection to check if non-loopback access is permitted.
func (*RTSPServer) OnConnOpen ¶
func (rs *RTSPServer) OnConnOpen(ctx *gortsplib.ServerHandlerOnConnOpenCtx)
OnConnOpen rejects non-loopback connections when remote sharing is disabled.
func (*RTSPServer) OnDescribe ¶
func (rs *RTSPServer) OnDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error)
OnDescribe handles DESCRIBE requests.
func (*RTSPServer) OnPlay ¶
func (rs *RTSPServer) OnPlay(_ *gortsplib.ServerHandlerOnPlayCtx) (*base.Response, error)
OnPlay handles PLAY requests.
func (*RTSPServer) OnSessionClose ¶
func (rs *RTSPServer) OnSessionClose(ctx *gortsplib.ServerHandlerOnSessionCloseCtx)
OnSessionClose handles session disconnection (RTCP timeout, TCP close, TEARDOWN).
func (*RTSPServer) OnSetup ¶
func (rs *RTSPServer) OnSetup(ctx *gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error)
OnSetup handles SETUP requests.