mediaserver

package module
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 8, 2020 License: GPL-2.0 Imports: 12 Imported by: 22

README

media-server-go

Build Status

WebRTC media server for go

How to use

Read the Tutorial

Yon can see the demos from here Demos

Examples

Install

media-server-go is not go getable, so you should clone it and build it yourself.

You should install libtool and autoconf automake before you build

On ubuntu

apt install autoconf
apt install libtool
apt install automake

On macOS

brew install libtool
brew install autoconf
brew install automake

Your compiler should support c++17, for linux, you should update your gcc/g++ to 7.0+

for macos, clang should support c++17.

sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update -qq
sudo apt-get install g++-7
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 90
git clone --recurse-submodules https://github.com/notedit/media-server-go.git  

cd media-server-go

make

go install 

then you can use media-server-go in your project.

Thanks

Documentation

Index

Constants

View Source
const MaxLayerId = 0xFF

Variables

This section is empty.

Functions

func EnableDebug

func EnableDebug(flag bool)

func EnableLog

func EnableLog(flag bool)

func EnableUltraDebug

func EnableUltraDebug(flag bool)

func Max

func Max(x, y int) int

func Min

func Min(x, y int) int

func NextSSRC

func NextSSRC() uint

func SetPortRange

func SetPortRange(minPort, maxPort int) bool

Types

type ActiveEncoding

type ActiveEncoding struct {
	EncodingId   string
	SimulcastIdx int
	Bitrate      uint
	Layers       []*Layer
}

ActiveEncoding info

type ActiveLayersInfo

type ActiveLayersInfo struct {
	Active   []*ActiveEncoding
	Inactive []*ActiveEncoding
	Layers   []*Layer
}

ActiveLayersInfo info

type BitrateTraversal

type BitrateTraversal string
const (
	TraversalDefault               BitrateTraversal = "default"
	TraversalSpatialTemporal       BitrateTraversal = "spatial-temporal"
	TraversalTemporalSpatial       BitrateTraversal = "temporal-spatial"
	TraversalZigZagSpatialTemporal BitrateTraversal = "zig-zag-spatial-temporal"
	TraversalZigZagTemporalSpatial BitrateTraversal = "zig-zag-temporal-spatial"
)

type DTLSStateListener added in v0.1.9

type DTLSStateListener func(state string)

DTLSStateListener listener

type Encoding

type Encoding struct {
	// contains filtered or unexported fields
}

Encoding info

func (*Encoding) GetDepacketizer

func (e *Encoding) GetDepacketizer() native.StreamTrackDepacketizer

GetDepacketizer get native StreamTrackDepacketizer

func (*Encoding) GetID

func (e *Encoding) GetID() string

GetID encoding id

func (*Encoding) GetSource

func (e *Encoding) GetSource() native.RTPIncomingSourceGroup

GetSource get native RTPIncomingSourceGroup

type Endpoint

type Endpoint struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Endpoint is an endpoint represent an UDP server socket. The endpoint will process STUN requests in order to be able to associate the remote ip:port with the registered transport and forward any further data comming from that transport. Being a server it is ICE-lite.

func NewEndpoint

func NewEndpoint(ip string) *Endpoint

NewEndpoint create a new endpoint with given ip

func NewEndpointWithPort

func NewEndpointWithPort(ip string, port int) *Endpoint

NewEndpointWithPort create a new endpint with given ip and port

func (*Endpoint) CreateOffer

func (e *Endpoint) CreateOffer(video *sdp.Capability, audio *sdp.Capability) *sdp.SDPInfo

CreateOffer create offer based on audio and video capability It generates a random ICE username and password and gets endpoint fingerprint

func (*Endpoint) CreateTransport

func (e *Endpoint) CreateTransport(remoteSdp *sdp.SDPInfo, localSdp *sdp.SDPInfo, options ...bool) *Transport

CreateTransport create a new transport object and register it with the remote ICE username and password disableSTUNKeepAlive - Disable ICE/STUN keep alives, required for server to server transports, set this to false if you do not how to use it

func (*Endpoint) GetDTLSFingerprint

func (e *Endpoint) GetDTLSFingerprint() string

GetDTLSFingerprint Get local DTLS fingerprint for this endpoint. It will be shared by all the transport associated to this endpoint

func (*Endpoint) GetLocalCandidates

func (e *Endpoint) GetLocalCandidates() []*sdp.CandidateInfo

GetLocalCandidates Get local ICE candidates for this endpoint. It will be shared by all the transport associated to this endpoint.

func (*Endpoint) SetAffinity added in v0.1.9

func (e *Endpoint) SetAffinity(cpu int)

SetAffinity Set cpu affinity

func (*Endpoint) Stop

func (e *Endpoint) Stop()

Stop stop the endpoint UDP server and terminate any associated transport

type ICEStats added in v0.1.9

type ICEStats struct {
	RequestsSent      int64
	RequestsReceived  int64
	ResponsesSent     int64
	ResponsesReceived int64
}

ICEStats ice stats for this connection

type IncomingAllStats

type IncomingAllStats struct {
	Rtt          uint
	MinWaitTime  uint
	MaxWaitTime  uint
	AvgWaitTime  float64
	Media        *IncomingStats
	Rtx          *IncomingStats
	Fec          *IncomingStats
	Bitrate      uint
	Total        uint
	Remb         uint
	SimulcastIdx int
	// contains filtered or unexported fields
}

IncomingAllStats info

type IncomingStats

type IncomingStats struct {
	LostPackets    uint
	DropPackets    uint
	NumPackets     uint
	NumRTCPPackets uint
	TotalBytes     uint
	TotalRTCPBytes uint
	TotalPLIs      uint
	TotalNACKs     uint
	Bitrate        uint
	Layers         []*Layer
}

IncomingStats info

type IncomingStream

type IncomingStream struct {
	// contains filtered or unexported fields
}

IncomingStream The incoming streams represent the recived media stream from a remote peer.

func (*IncomingStream) AddTrack

func (i *IncomingStream) AddTrack(track *IncomingStreamTrack) error

AddTrack Adds an incoming stream track created using the Transpocnder.CreateIncomingStreamTrack to this stream

func (*IncomingStream) CreateTrack

func (i *IncomingStream) CreateTrack(track *sdp.TrackInfo) *IncomingStreamTrack

CreateTrack Create new track from a TrackInfo object and add it to this stream

func (*IncomingStream) GetAudioTracks

func (i *IncomingStream) GetAudioTracks() []*IncomingStreamTrack

GetAudioTracks get all audio tracks

func (*IncomingStream) GetID

func (i *IncomingStream) GetID() string

GetID get id

func (*IncomingStream) GetStats

func (i *IncomingStream) GetStats() map[string]map[string]*IncomingAllStats

GetStats Get statistics for all tracks in the stream

func (*IncomingStream) GetStreamInfo

func (i *IncomingStream) GetStreamInfo() *sdp.StreamInfo

GetStreamInfo get stream info

func (*IncomingStream) GetTrack

func (i *IncomingStream) GetTrack(trackID string) *IncomingStreamTrack

GetTrack Get track by id

func (*IncomingStream) GetTracks

func (i *IncomingStream) GetTracks() []*IncomingStreamTrack

GetTracks Get all tracks in this stream

func (*IncomingStream) GetVideoTracks

func (i *IncomingStream) GetVideoTracks() []*IncomingStreamTrack

GetVideoTracks get all video tracks

func (*IncomingStream) RemoveTrack added in v0.1.15

func (i *IncomingStream) RemoveTrack(track *IncomingStreamTrack) error

func (*IncomingStream) Stop

func (i *IncomingStream) Stop()

Stop Removes the media strem from the transport and also detaches from any attached incoming stream

type IncomingStreamTrack

type IncomingStreamTrack struct {
	// contains filtered or unexported fields
}

IncomingStreamTrack Audio or Video track of a remote media stream

func NewIncomingStreamTrack added in v0.1.5

func NewIncomingStreamTrack(media string, id string, receiver native.RTPReceiverFacade, sources map[string]native.RTPIncomingSourceGroup) *IncomingStreamTrack

NewIncomingStreamTrack Create incoming audio/video track

func (*IncomingStreamTrack) Attached

func (i *IncomingStreamTrack) Attached()

Attached Signal that this track has been attached.

func (*IncomingStreamTrack) Detached

func (i *IncomingStreamTrack) Detached()

Detached Signal that this track has been detached.

func (*IncomingStreamTrack) GetActiveLayers

func (i *IncomingStreamTrack) GetActiveLayers() *ActiveLayersInfo

GetActiveLayers Get active encodings and layers ordered by bitrate

func (*IncomingStreamTrack) GetEncoding added in v0.1.5

func (i *IncomingStreamTrack) GetEncoding(encodingID string) *Encoding

GetEncoding get Encoding by id

func (*IncomingStreamTrack) GetEncodings

func (i *IncomingStreamTrack) GetEncodings() []*Encoding

GetEncodings get all encodings

func (*IncomingStreamTrack) GetFirstEncoding

func (i *IncomingStreamTrack) GetFirstEncoding() *Encoding

GetFirstEncoding get the first Encoding

func (*IncomingStreamTrack) GetID

func (i *IncomingStreamTrack) GetID() string

GetID get track id

func (*IncomingStreamTrack) GetMedia

func (i *IncomingStreamTrack) GetMedia() string

GetMedia get track media type "video" or "audio"

func (*IncomingStreamTrack) GetSSRCs

func (i *IncomingStreamTrack) GetSSRCs() []map[string]native.RTPIncomingSource

GetSSRCs get all RTPIncomingSource include "media" "rtx" "fec"

func (*IncomingStreamTrack) GetStats

func (i *IncomingStreamTrack) GetStats() map[string]*IncomingAllStats

GetStats Get stats for all encodings

func (*IncomingStreamTrack) GetTrackInfo

func (i *IncomingStreamTrack) GetTrackInfo() *sdp.TrackInfo

GetTrackInfo get track info

func (*IncomingStreamTrack) OnAttach added in v0.1.4

func (i *IncomingStreamTrack) OnAttach(attach func())

OnAttach run this func when attached

func (*IncomingStreamTrack) OnDetach added in v0.1.4

func (i *IncomingStreamTrack) OnDetach(detach func())

OnDetach

func (*IncomingStreamTrack) OnMediaFrame added in v0.1.5

func (i *IncomingStreamTrack) OnMediaFrame(listener func([]byte, uint64))

OnMediaFrame callback

func (*IncomingStreamTrack) Refresh

func (i *IncomingStreamTrack) Refresh()

Refresh Request an intra refres

func (*IncomingStreamTrack) Stop

func (i *IncomingStreamTrack) Stop()

Stop Removes the track from the incoming stream and also detaches any attached outgoing track or recorder

type IncomingStreamTrackMirrored added in v0.1.9

type IncomingStreamTrackMirrored struct {
	// contains filtered or unexported fields
}

func NewMirrorIncomingTrack added in v0.1.9

func NewMirrorIncomingTrack(track *IncomingStreamTrack, timeService native.TimeService) *IncomingStreamTrackMirrored

func (*IncomingStreamTrackMirrored) Attached added in v0.1.9

func (t *IncomingStreamTrackMirrored) Attached() bool

func (*IncomingStreamTrackMirrored) Detached added in v0.1.9

func (t *IncomingStreamTrackMirrored) Detached() bool

func (*IncomingStreamTrackMirrored) GetActiveLayers added in v0.1.9

func (t *IncomingStreamTrackMirrored) GetActiveLayers() *ActiveLayersInfo

func (*IncomingStreamTrackMirrored) GetID added in v0.1.9

func (*IncomingStreamTrackMirrored) GetMedia added in v0.1.9

func (t *IncomingStreamTrackMirrored) GetMedia() string

func (*IncomingStreamTrackMirrored) GetSSRCs added in v0.1.9

func (t *IncomingStreamTrackMirrored) GetSSRCs()

func (*IncomingStreamTrackMirrored) GetStats added in v0.1.9

func (*IncomingStreamTrackMirrored) GetTrackInfo added in v0.1.9

func (t *IncomingStreamTrackMirrored) GetTrackInfo() *sdp.TrackInfo

func (*IncomingStreamTrackMirrored) Refresh added in v0.1.9

func (t *IncomingStreamTrackMirrored) Refresh()

func (*IncomingStreamTrackMirrored) Stop added in v0.1.9

func (t *IncomingStreamTrackMirrored) Stop()

type IncomingTrackListener added in v0.1.4

type IncomingTrackListener func(*IncomingStreamTrack, *IncomingStream)

IncomingTrackListener new track listener

type IncomingTrackStopListener added in v0.1.4

type IncomingTrackStopListener func()

IncomingTrackStopListener stop listener

type Layer

type Layer struct {
	// EncodingId str
	EncodingId string
	// SpatialLayerId int
	SpatialLayerId int
	// TemporalLayerId  int
	TemporalLayerId int
	// SimulcastIdx int
	SimulcastIdx int
	// TotalBytes uint
	TotalBytes uint
	// NumPackets uint
	NumPackets uint
	// Bitrate  uint
	Bitrate uint
}

Layer info

type MediaFrameMultiplexer added in v0.1.9

type MediaFrameMultiplexer struct {
	// contains filtered or unexported fields
}

MediaStreamDuplicater we can make a copy of the incoming stream and callback the mediaframe data

func NewMediaFrameMultiplexer added in v0.1.9

func NewMediaFrameMultiplexer(track *IncomingStreamTrack) *MediaFrameMultiplexer

NewMediaStreamDuplicater duplicate this IncomingStreamTrack and callback the mediaframe

func (*MediaFrameMultiplexer) SetMediaFrameListener added in v0.1.9

func (d *MediaFrameMultiplexer) SetMediaFrameListener(listener func([]byte, uint64))

SetMediaFrameListener set outside mediaframe listener

func (*MediaFrameMultiplexer) Stop added in v0.1.9

func (d *MediaFrameMultiplexer) Stop()

Stop stop this

type MediaFrameSession added in v0.2.0

type MediaFrameSession struct {
	// contains filtered or unexported fields
}

func NewMediaFrameSession added in v0.2.0

func NewMediaFrameSession(media *sdp.MediaInfo) *MediaFrameSession

NewMediaFrameSession create media frame session

func (*MediaFrameSession) GetIncomingStreamTrack added in v0.2.0

func (s *MediaFrameSession) GetIncomingStreamTrack() *IncomingStreamTrack

GetIncomingStreamTrack get incoming stream track

func (*MediaFrameSession) Push added in v0.2.0

func (s *MediaFrameSession) Push(rtp []byte)

Push push raw media frame

func (*MediaFrameSession) Stop added in v0.2.0

func (s *MediaFrameSession) Stop()

Stop stop this

type OutgoingStats

type OutgoingStats struct {
	NumPackets     uint
	NumRTCPPackets uint
	TotalBytes     uint
	TotalRTCPBytes uint
	Bitrate        uint
}

OutgoingStats stats info

type OutgoingStatss

type OutgoingStatss struct {
	Media *OutgoingStats
	Rtx   *OutgoingStats
	Fec   *OutgoingStats
	// contains filtered or unexported fields
}

OutgoingStatss stats info

type OutgoingStream

type OutgoingStream struct {
	// contains filtered or unexported fields
}

OutgoingStream represent the media stream sent to a remote peer

func NewOutgoingStream

func NewOutgoingStream(transport native.DTLSICETransport, info *sdp.StreamInfo) *OutgoingStream

NewOutgoingStream create outgoing stream

func (*OutgoingStream) AddTrack

func (o *OutgoingStream) AddTrack(track *OutgoingStreamTrack)

AddTrack add one outgoing track

func (*OutgoingStream) AttachTo

func (o *OutgoingStream) AttachTo(incomingStream *IncomingStream) []*Transponder

AttachTo Listen media from the incoming stream and send it to the remote peer of the associated transport

func (*OutgoingStream) CreateTrack

func (o *OutgoingStream) CreateTrack(track *sdp.TrackInfo) *OutgoingStreamTrack

CreateTrack Create new track from a TrackInfo object and add it to this stream

func (*OutgoingStream) Detach

func (o *OutgoingStream) Detach()

Detach Stop listening for media

func (*OutgoingStream) GetAudioTracks

func (o *OutgoingStream) GetAudioTracks() []*OutgoingStreamTrack

GetAudioTracks Get an array of the media stream audio tracks

func (*OutgoingStream) GetID

func (o *OutgoingStream) GetID() string

GetID get id

func (*OutgoingStream) GetStats

func (o *OutgoingStream) GetStats() map[string]*OutgoingStatss

GetStats Get statistics for all tracks in the stream

func (*OutgoingStream) GetStreamInfo

func (o *OutgoingStream) GetStreamInfo() *sdp.StreamInfo

GetStreamInfo get the stream info

func (*OutgoingStream) GetTrack

func (o *OutgoingStream) GetTrack(trackID string) *OutgoingStreamTrack

GetTrack get one track

func (*OutgoingStream) GetTracks

func (o *OutgoingStream) GetTracks() []*OutgoingStreamTrack

GetTracks get all the tracks

func (*OutgoingStream) GetVideoTracks

func (o *OutgoingStream) GetVideoTracks() []*OutgoingStreamTrack

GetVideoTracks Get an array of the media stream video tracks

func (*OutgoingStream) IsMuted

func (o *OutgoingStream) IsMuted() bool

IsMuted Check if the stream is muted or not

func (*OutgoingStream) Mute

func (o *OutgoingStream) Mute(muting bool)

Mute Mute/Unmute this stream and all the tracks in it

func (*OutgoingStream) OnTrack added in v0.1.4

func (o *OutgoingStream) OnTrack(listener func(*OutgoingStreamTrack))

OnTrack new outgoing track listener

func (*OutgoingStream) RemoveTrack added in v0.1.15

func (o *OutgoingStream) RemoveTrack(track *OutgoingStreamTrack)

func (*OutgoingStream) Stop

func (o *OutgoingStream) Stop()

Stop stop the remote stream

type OutgoingStreamTrack

type OutgoingStreamTrack struct {
	// contains filtered or unexported fields
}

OutgoingStreamTrack Audio or Video track of a media stream sent to a remote peer

func (*OutgoingStreamTrack) AttachTo

func (o *OutgoingStreamTrack) AttachTo(incomingTrack *IncomingStreamTrack) *Transponder

AttachTo Listen media from the incoming stream track and send it to the remote peer of the associated transport

func (*OutgoingStreamTrack) Detach

func (o *OutgoingStreamTrack) Detach()

Detach Stop forwarding any previous attached track

func (*OutgoingStreamTrack) GetID

func (o *OutgoingStreamTrack) GetID() string

GetID get track id

func (*OutgoingStreamTrack) GetMedia

func (o *OutgoingStreamTrack) GetMedia() string

GetMedia get media type

func (*OutgoingStreamTrack) GetSSRCs

GetSSRCs get ssrcs map

func (*OutgoingStreamTrack) GetStats

func (o *OutgoingStreamTrack) GetStats() *OutgoingStatss

GetStats get stats info

func (*OutgoingStreamTrack) GetTrackInfo

func (o *OutgoingStreamTrack) GetTrackInfo() *sdp.TrackInfo

GetTrackInfo get track info

func (*OutgoingStreamTrack) GetTransponder

func (o *OutgoingStreamTrack) GetTransponder() *Transponder

GetTransponder Get attached transpoder for this track

func (*OutgoingStreamTrack) IsMuted

func (o *OutgoingStreamTrack) IsMuted() bool

IsMuted Check if the track is muted or not

func (*OutgoingStreamTrack) Mute

func (o *OutgoingStreamTrack) Mute(muting bool)

Mute Mute/Unmute the track

func (*OutgoingStreamTrack) OnMute added in v0.1.4

func (o *OutgoingStreamTrack) OnMute(mute func(bool))

func (*OutgoingStreamTrack) Stop

func (o *OutgoingStreamTrack) Stop()

Stop Removes the track from the outgoing stream and also detaches from any attached incoming track

type OutgoingTrackListener added in v0.1.4

type OutgoingTrackListener func(*OutgoingStreamTrack, *OutgoingStream)

OutgoingTrackListener new track listener

type Recorder

type Recorder struct {
	// contains filtered or unexported fields
}

Recorder represent a file recorder

func NewRecorder

func NewRecorder(filename string, waitForIntra bool, refresh int) *Recorder

NewRecorder create a new recorder

func (*Recorder) Record

func (r *Recorder) Record(incoming *IncomingStreamTrack)

Record start record an incoming track

func (*Recorder) RecordStream

func (r *Recorder) RecordStream(incoming *IncomingStream)

RecordStream start record an incoming stream

func (*Recorder) Stop

func (r *Recorder) Stop()

Stop stop the recorder

type RecorderTrack

type RecorderTrack struct {
	// contains filtered or unexported fields
}

RecorderTrack a track to record

func NewRecorderTrack

func NewRecorderTrack(id string, track *IncomingStreamTrack, encoding *Encoding) *RecorderTrack

NewRecorderTrack create a new recorder track

func (*RecorderTrack) GetEncoding

func (r *RecorderTrack) GetEncoding() *Encoding

GetEncoding get encoding info

func (*RecorderTrack) GetID

func (r *RecorderTrack) GetID() string

GetID get recorder track id

func (*RecorderTrack) GetTrack

func (r *RecorderTrack) GetTrack() *IncomingStreamTrack

GetTrack get internal IncomingStreamTrack

func (*RecorderTrack) Stop

func (r *RecorderTrack) Stop()

Stop stop the recorder track

type RecorderTrackStopListener added in v0.1.4

type RecorderTrackStopListener func()

type Refresher

type Refresher struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewRefresher

func NewRefresher(period int) *Refresher

func (*Refresher) Add

func (r *Refresher) Add(incom *IncomingStreamTrack)

func (*Refresher) AddStream

func (r *Refresher) AddStream(incoming *IncomingStream)

func (*Refresher) Stop

func (r *Refresher) Stop()

type StreamerSession

type StreamerSession struct {
	// contains filtered or unexported fields
}

StreamerSession represent a rtp session

func NewStreamerSession

func NewStreamerSession(media *sdp.MediaInfo) *StreamerSession

NewStreamerSession new StreamerSession with auto selectd port

func NewStreamerSessionWithLocalPort added in v0.1.13

func NewStreamerSessionWithLocalPort(port int, media *sdp.MediaInfo) *StreamerSession

NewStreamerSessionWithLocalPort create streamer session with pre selected port

func (*StreamerSession) GetID

func (s *StreamerSession) GetID() string

GetID get id

func (*StreamerSession) GetIncomingStreamTrack

func (s *StreamerSession) GetIncomingStreamTrack() *IncomingStreamTrack

GetIncomingStreamTrack get asso incoming track,

func (*StreamerSession) GetLocalPort added in v0.1.13

func (s *StreamerSession) GetLocalPort() int

func (*StreamerSession) GetOutgoingStreamTrack

func (s *StreamerSession) GetOutgoingStreamTrack() *OutgoingStreamTrack

GetOutgoingStreamTrack get asso outgoing track,

func (*StreamerSession) SetRemotePort added in v0.1.12

func (s *StreamerSession) SetRemotePort(ip string, port int)

func (*StreamerSession) Stop

func (s *StreamerSession) Stop()

Stop it

type Transponder

type Transponder struct {
	// contains filtered or unexported fields
}

Transponder

func NewTransponder

func NewTransponder(transponderFacade native.RTPStreamTransponderFacade) *Transponder

func (*Transponder) GetAvailableLayers

func (t *Transponder) GetAvailableLayers() *ActiveLayersInfo

GetAvailableLayers Get available encodings and layers

func (*Transponder) GetIncomingTrack

func (t *Transponder) GetIncomingTrack() *IncomingStreamTrack

func (*Transponder) GetSelectedEncoding

func (t *Transponder) GetSelectedEncoding() string

GetSelectedEncoding get selected encoding id

func (*Transponder) GetSelectedSpatialLayerId

func (t *Transponder) GetSelectedSpatialLayerId() int

GetSelectedSpatialLayerId return int

func (*Transponder) GetSelectedTemporalLayerId

func (t *Transponder) GetSelectedTemporalLayerId() int

GetSelectedTemporalLayerId return int

func (*Transponder) IsMuted

func (t *Transponder) IsMuted() bool

func (*Transponder) Mute

func (t *Transponder) Mute(muting bool)

func (*Transponder) SelectEncoding

func (t *Transponder) SelectEncoding(encodingId string)

SelectEncoding by id

func (*Transponder) SelectLayer

func (t *Transponder) SelectLayer(spatialLayerId, temporalLayerId int)

SelectLayer Select SVC temporatl and spatial layers. Only available for VP9 media.

func (*Transponder) SetIncomingTrack

func (t *Transponder) SetIncomingTrack(incomingTrack *IncomingStreamTrack) error

func (*Transponder) SetMaximumLayers

func (t *Transponder) SetMaximumLayers(maxSpatialLayerId, maxTemporalLayerId int)

func (*Transponder) SetTargetBitrate

func (t *Transponder) SetTargetBitrate(bitrate uint, traversal BitrateTraversal, strict bool) uint

func (*Transponder) Stop

func (t *Transponder) Stop()

Stop stop this transponder

type Transport

type Transport struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Transport represent a connection between a local ICE candidate and a remote set of ICE candidates over a single DTLS session

func NewTransport

func NewTransport(bundle native.RTPBundleTransport, remoteIce *sdp.ICEInfo, remoteDtls *sdp.DTLSInfo, remoteCandidates []*sdp.CandidateInfo,
	localIce *sdp.ICEInfo, localDtls *sdp.DTLSInfo, localCandidates []*sdp.CandidateInfo, disableSTUNKeepAlive bool) *Transport

NewTransport create a new transport

func (*Transport) AddRemoteCandidate

func (t *Transport) AddRemoteCandidate(candidate *sdp.CandidateInfo)

AddRemoteCandidate register a remote candidate info. Only needed for ice-lite to ice-lite endpoints

func (*Transport) CreateIncomingStream

func (t *Transport) CreateIncomingStream(streamInfo *sdp.StreamInfo) *IncomingStream

CreateIncomingStream Create an incoming stream object from the media stream info objet

func (*Transport) CreateIncomingStreamTrack

func (t *Transport) CreateIncomingStreamTrack(media string, trackId string, ssrcs map[string]uint) *IncomingStreamTrack

CreateIncomingStreamTrack Create new incoming stream in this transport. TODO: Simulcast is still not supported You can use IncomingStream's CreateTrack

func (*Transport) CreateOutgoingStream

func (t *Transport) CreateOutgoingStream(streamInfo *sdp.StreamInfo) *OutgoingStream

CreateOutgoingStream Create new outgoing stream in this transport using StreamInfo

func (*Transport) CreateOutgoingStreamTrack

func (t *Transport) CreateOutgoingStreamTrack(media string, trackId string, ssrcs map[string]uint) *OutgoingStreamTrack

CreateOutgoingStreamTrack Create new outgoing track in this transport

func (*Transport) CreateOutgoingStreamWithID

func (t *Transport) CreateOutgoingStreamWithID(streamID string, audio bool, video bool) *OutgoingStream

CreateOutgoingStreamWithID alias CreateOutgoingStream

func (*Transport) Dump added in v0.1.3

func (t *Transport) Dump(filename string, incoming bool, outgoing bool, rtcp bool) bool

Dump dump incoming and outgoint rtp and rtcp packets into a pcap file

func (*Transport) GetDTLSState added in v0.1.9

func (t *Transport) GetDTLSState() string

GetDTLSState get dtls state

func (*Transport) GetICEStats added in v0.1.9

func (t *Transport) GetICEStats() *ICEStats

GetICEStats get ice stats

func (*Transport) GetIncomingStream

func (t *Transport) GetIncomingStream(streamId string) *IncomingStream

GetIncomingStream get one incoming stream

func (*Transport) GetIncomingStreams

func (t *Transport) GetIncomingStreams() []*IncomingStream

GetIncomingStreams get all incoming streams

func (*Transport) GetLocalCandidates

func (t *Transport) GetLocalCandidates() []*sdp.CandidateInfo

GetLocalCandidates Get local ICE candidates for this transport

func (*Transport) GetLocalDTLSInfo

func (t *Transport) GetLocalDTLSInfo() *sdp.DTLSInfo

GetLocalDTLSInfo Get transport local DTLS info

func (*Transport) GetLocalICEInfo

func (t *Transport) GetLocalICEInfo() *sdp.ICEInfo

GetLocalICEInfo Get transport local ICE info

func (*Transport) GetOutgoingStream

func (t *Transport) GetOutgoingStream(streamId string) *OutgoingStream

GetOutgoingStream get one outgoing stream

func (*Transport) GetOutgoingStreams

func (t *Transport) GetOutgoingStreams() []*OutgoingStream

GetOutgoingStreams get all outgoing streams

func (*Transport) GetRemoteCandidates

func (t *Transport) GetRemoteCandidates() []*sdp.CandidateInfo

GetRemoteCandidates Get remote ICE candidates for this transport

func (*Transport) OnDTLSICEState added in v0.1.9

func (t *Transport) OnDTLSICEState(listener DTLSStateListener)

OnDTLSICEState OnDTLSICEState

func (*Transport) OnIncomingTrack added in v0.1.4

func (t *Transport) OnIncomingTrack(listener IncomingTrackListener)

OnIncomingTrack register incoming track

func (*Transport) OnOutgoingTrack added in v0.1.4

func (t *Transport) OnOutgoingTrack(listener OutgoingTrackListener)

OnOutgoingTrack register outgoing track

func (*Transport) RemoveIncomingStream added in v0.1.9

func (t *Transport) RemoveIncomingStream(incomingStream *IncomingStream)

func (*Transport) SetBandwidthProbing

func (t *Transport) SetBandwidthProbing(probe bool)

SetBandwidthProbing Enable/Disable bitrate probing This will send padding only RTX packets to allow bandwidth estimation algortithm to probe bitrate beyonf current sent values. The ammoung of probing bitrate would be limited by the sender bitrate estimation and the limit set on the setMaxProbing Bitrate.

func (*Transport) SetLocalProperties

func (t *Transport) SetLocalProperties(audio *sdp.MediaInfo, video *sdp.MediaInfo)

SetLocalProperties Set local RTP properties

func (*Transport) SetMaxProbingBitrate

func (t *Transport) SetMaxProbingBitrate(bitrate uint)

SetMaxProbingBitrate Set the maximum bitrate to be used if probing is enabled.

func (*Transport) SetRemoteProperties

func (t *Transport) SetRemoteProperties(audio *sdp.MediaInfo, video *sdp.MediaInfo)

SetRemoteProperties Set remote RTP properties

func (*Transport) Stop

func (t *Transport) Stop()

Stop stop this transport

type TransportStopListener added in v0.1.4

type TransportStopListener func()

TransportStopListener listener

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL