Versions in this module Expand all Collapse all v1 v1.10.11 Aug 7, 2021 Changes in this version + const APIChannelLabel + const AudioLevelsMethod + var ErrNoTransportEstablished = errors.New("no rtc transport exists for this Peer") + var ErrOfferIgnored = errors.New("offered ignored") + var ErrSpatialLayerBusy = errors.New("a spatial layer change is in progress, try latter") + var ErrSpatialNotSupported = errors.New("current track does not support simulcast/SVC") + var ErrTransportExists = errors.New("rtc transport already exists for this connection") + var Logger logr.Logger = logr.Discard() + func InitTurnServer(conf TurnConfig, ...) (*turn.Server, error) + func RelayWithFanOutDataChannels() func(r *relayPeer) + func RelayWithSenderReports() func(r *relayPeer) + type AudioObserver struct + func NewAudioObserver(threshold uint8, interval, filter int) *AudioObserver + func (a *AudioObserver) Calc() []string + type Candidates struct + IceLite bool + NAT1To1IPs []string + type ChannelAPIMessage struct + Method string + Params interface{} + type Config struct + BufferFactory *buffer.Factory + Router RouterConfig + SFU struct{ ... } + Turn TurnConfig + TurnAuth func(username string, realm string, srcAddr net.Addr) ([]byte, bool) + WebRTC WebRTCConfig + type Datachannel struct + Label string + func (dc *Datachannel) OnMessage(fn func(ctx context.Context, args ProcessArgs)) + func (dc *Datachannel) Use(middlewares ...func(MessageProcessor) MessageProcessor) + type DownTrack struct + func NewDownTrack(c webrtc.RTPCodecCapability, r Receiver, bf *buffer.Factory, peerID string, ...) (*DownTrack, error) + func (d *DownTrack) Bind(t webrtc.TrackLocalContext) (webrtc.RTPCodecParameters, error) + func (d *DownTrack) Close() + func (d *DownTrack) Codec() webrtc.RTPCodecCapability + func (d *DownTrack) CreateSenderReport() *rtcp.SenderReport + func (d *DownTrack) CreateSourceDescriptionChunks() []rtcp.SourceDescriptionChunk + func (d *DownTrack) CurrentSpatialLayer() int + func (d *DownTrack) Enabled() bool + func (d *DownTrack) ID() string + func (d *DownTrack) Kind() webrtc.RTPCodecType + func (d *DownTrack) Mute(val bool) + func (d *DownTrack) OnBind(fn func()) + func (d *DownTrack) OnCloseHandler(fn func()) + func (d *DownTrack) SetInitialLayers(spatialLayer, temporalLayer int32) + func (d *DownTrack) SetTransceiver(transceiver *webrtc.RTPTransceiver) + func (d *DownTrack) Stop() error + func (d *DownTrack) StreamID() string + func (d *DownTrack) SwitchSpatialLayer(targetLayer int32, setAsMax bool) error + func (d *DownTrack) SwitchSpatialLayerDone(layer int32) + func (d *DownTrack) SwitchTemporalLayer(targetLayer int32, setAsMax bool) + func (d *DownTrack) Unbind(_ webrtc.TrackLocalContext) error + func (d *DownTrack) UpdateStats(packetLen uint32) + func (d *DownTrack) UptrackLayersChange(availableLayers []uint16) (int64, error) + func (d *DownTrack) WriteRTP(p *buffer.ExtPacket, layer int) error + type DownTrackType int + const SimpleDownTrack + const SimulcastDownTrack + type ICEServerConfig struct + Credential string + URLs []string + Username string + type JoinConfig struct + NoAutoSubscribe bool + NoPublish bool + NoSubscribe bool + type MessageProcessor interface + Process func(ctx context.Context, args ProcessArgs) + type Middlewares []func(MessageProcessor) MessageProcessor + func (mws Middlewares) Process(h MessageProcessor) MessageProcessor + func (mws Middlewares) ProcessFunc(h MessageProcessor) MessageProcessor + type Peer interface + Close func() error + ID func() string + Publisher func() *Publisher + SendDCMessage func(label string, msg []byte) error + Session func() Session + Subscriber func() *Subscriber + type PeerLocal struct + OnICEConnectionStateChange func(webrtc.ICEConnectionState) + OnIceCandidate func(*webrtc.ICECandidateInit, int) + OnOffer func(*webrtc.SessionDescription) + func NewPeer(provider SessionProvider) *PeerLocal + func (p *PeerLocal) Answer(sdp webrtc.SessionDescription) (*webrtc.SessionDescription, error) + func (p *PeerLocal) Close() error + func (p *PeerLocal) ID() string + func (p *PeerLocal) Join(sid, uid string, config ...JoinConfig) error + func (p *PeerLocal) Publisher() *Publisher + func (p *PeerLocal) SendDCMessage(label string, msg []byte) error + func (p *PeerLocal) Session() Session + func (p *PeerLocal) SetRemoteDescription(sdp webrtc.SessionDescription) error + func (p *PeerLocal) Subscriber() *Subscriber + func (p *PeerLocal) Trickle(candidate webrtc.ICECandidateInit, target int) error + type ProcessArgs struct + DataChannel *webrtc.DataChannel + Message webrtc.DataChannelMessage + Peer Peer + type ProcessFunc func(ctx context.Context, args ProcessArgs) + func (p ProcessFunc) Process(ctx context.Context, args ProcessArgs) + type Publisher struct + func NewPublisher(id string, session Session, cfg *WebRTCTransportConfig) (*Publisher, error) + func (p *Publisher) AddICECandidate(candidate webrtc.ICECandidateInit) error + func (p *Publisher) AddRelayFanOutDataChannel(label string) + func (p *Publisher) Answer(offer webrtc.SessionDescription) (webrtc.SessionDescription, error) + func (p *Publisher) Close() + func (p *Publisher) GetRelayedDataChannels(label string) []*webrtc.DataChannel + func (p *Publisher) GetRouter() Router + func (p *Publisher) OnICECandidate(f func(c *webrtc.ICECandidate)) + func (p *Publisher) OnICEConnectionStateChange(f func(connectionState webrtc.ICEConnectionState)) + func (p *Publisher) OnPublisherTrack(f func(track PublisherTrack)) + func (p *Publisher) PeerConnection() *webrtc.PeerConnection + func (p *Publisher) Relay(signalFn func(meta relay.PeerMeta, signal []byte) ([]byte, error), ...) (*relay.Peer, error) + func (p *Publisher) Relayed() bool + func (p *Publisher) SignalingState() webrtc.SignalingState + func (p *Publisher) Tracks() []*webrtc.TrackRemote + type Receiver interface + AddDownTrack func(track *DownTrack, bestQualityFirst bool) + AddUpTrack func(track *webrtc.TrackRemote, buffer *buffer.Buffer, bestQualityFirst bool) + Codec func() webrtc.RTPCodecParameters + DeleteDownTrack func(layer int, id string) + GetBitrate func() [3]uint64 + GetMaxTemporalLayer func() [3]int32 + GetSenderReportTime func(layer int) (rtpTS uint32, ntpTS uint64) + Kind func() webrtc.RTPCodecType + OnCloseHandler func(fn func()) + RetransmitPackets func(track *DownTrack, packets []packetMeta) error + SSRC func(layer int) uint32 + SendRTCP func(p []rtcp.Packet) + SetRTCPCh func(ch chan []rtcp.Packet) + StreamID func() string + SwitchDownTrack func(track *DownTrack, layer int) error + TrackID func() string + func NewWebRTCReceiver(receiver *webrtc.RTPReceiver, track *webrtc.TrackRemote, pid string) Receiver + type RelayPeer struct + func NewRelayPeer(peer *relay.Peer, session Session, config *WebRTCTransportConfig) *RelayPeer + func (r *RelayPeer) DataChannel(label string) *webrtc.DataChannel + func (r *RelayPeer) GetRouter() Router + func (r *RelayPeer) ID() string + func (r *RelayPeer) Relay(signalFn func(meta relay.PeerMeta, signal []byte) ([]byte, error)) (*relay.Peer, error) + type Router interface + AddDownTracks func(s *Subscriber, r Receiver) error + AddReceiver func(receiver *webrtc.RTPReceiver, track *webrtc.TrackRemote) (Receiver, bool) + ID func() string + SetRTCPWriter func(func([]rtcp.Packet) error) + Stop func() + type RouterConfig struct + AudioLevelFilter int + AudioLevelInterval int + AudioLevelThreshold uint8 + MaxBandwidth uint64 + MaxPacketTrack int + Simulcast SimulcastConfig + WithStats bool + type SFU struct + func NewSFU(c Config) *SFU + func (s *SFU) GetSession(sid string) (Session, WebRTCTransportConfig) + func (s *SFU) GetSessions() []Session + func (s *SFU) NewDatachannel(label string) *Datachannel + type Session interface + AddDatachannel func(owner string, dc *webrtc.DataChannel) + AddPeer func(peer Peer) + AddRelayPeer func(peerID string, signalData []byte) ([]byte, error) + AudioObserver func() *AudioObserver + FanOutMessage func(origin, label string, msg webrtc.DataChannelMessage) + GetDCMiddlewares func() []*Datachannel + GetDataChannels func(peerID, label string) (dcs []*webrtc.DataChannel) + GetFanOutDataChannelLabels func() []string + GetPeer func(peerID string) Peer + ID func() string + Peers func() []Peer + Publish func(router Router, r Receiver) + RelayPeers func() []*RelayPeer + RemovePeer func(peer Peer) + Subscribe func(peer Peer) + func NewSession(id string, dcs []*Datachannel, cfg WebRTCTransportConfig) Session + type SessionLocal struct + func (s *SessionLocal) AddDatachannel(owner string, dc *webrtc.DataChannel) + func (s *SessionLocal) AddPeer(peer Peer) + func (s *SessionLocal) AddRelayPeer(peerID string, signalData []byte) ([]byte, error) + func (s *SessionLocal) AudioObserver() *AudioObserver + func (s *SessionLocal) Close() + func (s *SessionLocal) FanOutMessage(origin, label string, msg webrtc.DataChannelMessage) + func (s *SessionLocal) GetDCMiddlewares() []*Datachannel + func (s *SessionLocal) GetDataChannels(peerID, label string) []*webrtc.DataChannel + func (s *SessionLocal) GetFanOutDataChannelLabels() []string + func (s *SessionLocal) GetPeer(peerID string) Peer + func (s *SessionLocal) GetRelayPeer(peerID string) *RelayPeer + func (s *SessionLocal) ID() string + func (s *SessionLocal) OnClose(f func()) + func (s *SessionLocal) Peers() []Peer + func (s *SessionLocal) Publish(router Router, r Receiver) + func (s *SessionLocal) RelayPeers() []*RelayPeer + func (s *SessionLocal) RemovePeer(p Peer) + func (s *SessionLocal) Subscribe(peer Peer) + type SessionProvider interface + GetSession func(sid string) (Session, WebRTCTransportConfig) + type SimulcastConfig struct + BestQualityFirst bool + EnableTemporalLayer bool + type Subscriber struct + func NewSubscriber(id string, cfg WebRTCTransportConfig) (*Subscriber, error) + func (s *Subscriber) AddDataChannel(label string) (*webrtc.DataChannel, error) + func (s *Subscriber) AddDatachannel(peer Peer, dc *Datachannel) error + func (s *Subscriber) AddDownTrack(streamID string, downTrack *DownTrack) + func (s *Subscriber) AddICECandidate(candidate webrtc.ICECandidateInit) error + func (s *Subscriber) Close() error + func (s *Subscriber) CreateOffer() (webrtc.SessionDescription, error) + func (s *Subscriber) DataChannel(label string) *webrtc.DataChannel + func (s *Subscriber) DownTracks() []*DownTrack + func (s *Subscriber) GetDatachannel(label string) *webrtc.DataChannel + func (s *Subscriber) GetDownTracks(streamID string) []*DownTrack + func (s *Subscriber) Negotiate() + func (s *Subscriber) OnICECandidate(f func(c *webrtc.ICECandidate)) + func (s *Subscriber) OnNegotiationNeeded(f func()) + func (s *Subscriber) RegisterDatachannel(label string, dc *webrtc.DataChannel) + func (s *Subscriber) RemoveDownTrack(streamID string, downTrack *DownTrack) + func (s *Subscriber) SetRemoteDescription(desc webrtc.SessionDescription) error + type TurnAuth struct + Credentials string + Secret string + type TurnConfig struct + Address string + Auth TurnAuth + Cert string + Enabled bool + Key string + PortRange []uint16 + Realm string + type WebRTCConfig struct + Candidates Candidates + ICEPortRange []uint16 + ICEServers []ICEServerConfig + ICESinglePort int + MDNS bool + SDPSemantics string + Timeouts WebRTCTimeoutsConfig + type WebRTCReceiver struct + func (w *WebRTCReceiver) AddDownTrack(track *DownTrack, bestQualityFirst bool) + func (w *WebRTCReceiver) AddUpTrack(track *webrtc.TrackRemote, buff *buffer.Buffer, bestQualityFirst bool) + func (w *WebRTCReceiver) Codec() webrtc.RTPCodecParameters + func (w *WebRTCReceiver) DeleteDownTrack(layer int, id string) + func (w *WebRTCReceiver) GetBitrate() [3]uint64 + func (w *WebRTCReceiver) GetMaxTemporalLayer() [3]int32 + func (w *WebRTCReceiver) GetSenderReportTime(layer int) (rtpTS uint32, ntpTS uint64) + func (w *WebRTCReceiver) Kind() webrtc.RTPCodecType + func (w *WebRTCReceiver) OnCloseHandler(fn func()) + func (w *WebRTCReceiver) RetransmitPackets(track *DownTrack, packets []packetMeta) error + func (w *WebRTCReceiver) SSRC(layer int) uint32 + func (w *WebRTCReceiver) SendRTCP(p []rtcp.Packet) + func (w *WebRTCReceiver) SetRTCPCh(ch chan []rtcp.Packet) + func (w *WebRTCReceiver) StreamID() string + func (w *WebRTCReceiver) SwitchDownTrack(track *DownTrack, layer int) error + func (w *WebRTCReceiver) TrackID() string + type WebRTCTimeoutsConfig struct + ICEDisconnectedTimeout int + ICEFailedTimeout int + ICEKeepaliveInterval int + type WebRTCTransportConfig struct + BufferFactory *buffer.Factory + Configuration webrtc.Configuration + Router RouterConfig + Setting webrtc.SettingEngine + func NewWebRTCTransportConfig(c Config) WebRTCTransportConfig