medooze-media-server

0.140.6

MediaServer

MediaServer
Static Members
▸ setCertificate(cert, key)
▸ getDTLSFingerprint()
▸ terminate()
▸ enableLog(flag)
▸ enableDebug(flag)
▸ setPortRange(minPort, maxPort)
▸ setAffinity(cpu)
▸ setThreadName(name)
▸ enableUltraDebug(flag)
▸ createEndpoint(ip, params)
▸ createOffer(capabilities)
▸ createRecorder(filename, params)
▸ createPlayer(filename)
▸ createStreamer()
▸ createActiveSpeakerDetector()
▸ createRefresher(period)
▸ createIncomingStreamTrackReader(intraOnly, minPeriod)
▸ createEmulatedTransport(pcap, filename)
▸ getDefaultCapabilities()

SDPManager

SDPManager

new SDPManager()

Extends Emitter

Instance Members
▸ getState()
▸ getTransport()
▸ stop()
Events
▸ stopped

ActiveSpeakerMultiplexer

ActiveSpeakerMultiplexer multiplex multiple incoming audio tracks into fewer outgoing tracks based on voice activity.

new ActiveSpeakerMultiplexer()

Extends Emitter

Instance Members
▸ setMinChangePeriod(minChangePeriod)
▸ setMaxAccumulatedScore(maxAcummulatedScore)
▸ setNoiseGatingThreshold(noiseGatingThreshold)
▸ setMinActivationScore(minActivationScore)
▸ addSpeaker(track)
▸ removeSpeaker(track)
▸ stop()
Events
▸ activespeakerchanged
▸ noactivespeaker
▸ stopped

RecorderTrack

Track of the recorder associated to an incoming strem track

new RecorderTrack()

Extends Emitter

Instance Members
▸ getId()
▸ getTrack()
▸ isMuted()
▸ mute(muting)
▸ stop()
Events
▸ stopped

Refresher

Periodically request an I frame on all incoming stream or tracks

new Refresher()

Extends Emitter

Instance Members
▸ restart(period, timeout)
▸ add(streamOrTrack)
▸ remove(streamOrTrack)
▸ stop()
Events
▸ refreshing
▸ stopped

Streamer

An streamer allows to send and receive plain RTP over udp sockets. This allows both to bridge legacy enpoints or integrate streaming/broadcasting services.

new Streamer()

Extends Emitter

Instance Members
▸ createSession(media, params)
▸ stop()
Events
▸ stopped

ActiveSpeakerDetector

ActiveSpeakerDetector accumulate received voice activity and fires an event when it changes

new ActiveSpeakerDetector()

Extends Emitter

Instance Members
▸ setMinChangePeriod(minChangePeriod)
▸ setMaxAccumulatedScore(maxAcummulatedScore)
▸ setNoiseGatingThreshold(noiseGatingThreshold)
▸ setMinActivationScore(minActivationScore)
▸ addSpeaker(track)
▸ removeSpeaker(track)
▸ stop()
Events
▸ activespeakerchanged
▸ stopped

Transponder

Transponder copies data from an incoming track to an outgoing track and allows stream modifications

new Transponder()

Extends Emitter

Instance Members
▸ setIncomingTrack(track, layers, smooth)
▸ appendH264ParameterSets(sprop)
▸ getMedia()
▸ getIncomingTrack()
▸ getAvailableLayers()
▸ getAvailableLayersAsync()
▸ isMuted()
▸ mute(muting)
▸ setIntraOnlyForwarding(intraOnlyForwarding)
▸ setTargetBitrate(target, options, bitrate)
▸ setTargetBitrateAsync(target, options, bitrate)
▸ select(layers, smooth)
▸ getSelectedEncoding()
▸ getSelectedSpatialLayerId()
▸ getSelectedTemporalLayerId()
▸ getSelectedLayer()
▸ getSelectedLayerAsync()
▸ selectLayer(spatialLayerId, temporalLayerId)
▸ setMaximumLayers(maxSpatialLayerId, maxTemporalLayerId)
▸ stop()
Events
▸ muted
▸ muted
▸ stopped

Recorder

MP4 recorder that allows to record several streams/tracks on a single mp4 file

new Recorder()

Extends Emitter

Instance Members
▸ getFilename()
▸ getStartTime()
▸ isTimeShifted()
▸ flush(filename)
▸ record(incomingStreamOrTrack, options)
▸ mute(muting)
▸ stop()
Events
▸ started
▸ stopped

Player

MP4 recorder that allows to record several streams/tracks on a single mp4 file

new Player()

Extends Emitter

Instance Members
▸ getTracks()
▸ getAudioTracks()
▸ getVideoTracks()
▸ play(params)
▸ resume()
▸ pause()
▸ seek(time)
▸ stop()
Events
▸ ended
▸ stopped

StreamerSession

Represent the connection between a local udp port and a remote one. It sends and/or receive plain RTP data.

new StreamerSession()

Extends Emitter

Instance Members
▸ getLocalPort()
▸ setRemote(ip, port)
▸ getIncomingStreamTrack()
▸ getOutgoingStreamTrack()
▸ stop()
Events
▸ stopped

on

Add event listener

on(event: String, listeener: function): Transport
Parameters
event (String) Event name
listeener (function) Event listener
Returns
Transport:

once

Add event listener once

once(event: String, listener: function): IncomingStream
Parameters
event (String) Event name
listener (function) Event listener
Returns
IncomingStream:

off

Remove event listener

off(event: String, listener: function): Transport
Parameters
event (String) Event name
listener (function) Event listener
Returns
Transport:

IncomingStream

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

new IncomingStream()

Extends Emitter

Instance Members
▸ getId()
▸ getStreamInfo()
▸ getStats()
▸ getStatsAsync()
▸ isMuted()
▸ getTrack(trackId)
▸ getTracks(type)
▸ getAudioTracks()
▸ getVideoTracks()
▸ createTrack(trackInfo)
▸ reset()
▸ isAttached()
▸ stop()
Events
▸ muted
▸ attached
▸ attached
▸ detached
▸ track
▸ stopped

IncomingStreamTrackMirrored

Mirror incoming stream from another endpoint. Used to avoid inter-thread synchronization when attaching multiple output streams.

new IncomingStreamTrackMirrored()

Extends Emitter

Instance Members
▸ getStats()
▸ getStatsAsync()
▸ getActiveLayers()
▸ getActiveLayersAsync()
▸ getId()
▸ getMediaId()
▸ getTrackInfo()
▸ getSSRCs()
▸ getMedia()
▸ getEncodings()
▸ getEncoding(encodingId)
▸ getDefaultEncoding()
▸ isAttached()
▸ attached()
▸ refresh()
▸ detached()
▸ isMuted()
▸ stop()
Events
▸ attached
▸ attached
▸ detached
▸ detached
▸ stopped
▸ stopped

OutgoingStream

The incoming streams represent the media stream sent to a remote peer.

new OutgoingStream()

Extends Emitter

Instance Members
▸ getStats()
▸ getStatsAsync()
▸ isMuted()
▸ attachTo(incomingStream, layers)
▸ detach()
▸ getStreamInfo()
▸ getId()
▸ getTracks(type)
▸ getTrack(trackId)
▸ getAudioTracks()
▸ getVideoTracks()
▸ createTrack(params, trackInfo)
Events
▸ muted
▸ track
▸ stopped

PeerConnectionServer

Manager of remote peer connecion clients

new PeerConnectionServer()

Extends Emitter

Instance Members
▸ stop()
Events
▸ transport
▸ stopped

EmulatedTransport

An emulated transport reads data from a unencrypted pcap file (typically from a transport dump), and acts like if it was a live transport from a remote peer. You must create the incoming streams as signaled on the remote SDP as any incoming RTP with an unknown ssrc will be ignored. The emulated transport does not allow creating outgoing streams.

new EmulatedTransport()

Extends Emitter

Instance Members
▸ setRemoteProperties(rtp)
▸ createIncomingStream(info)
▸ play(params)
▸ resume()
▸ pause()
▸ seek(time)
▸ stop()
Events
▸ stopped

Endpoint

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.

new Endpoint()

Extends Emitter

Instance Members
▸ setAffinity(cpu)
▸ setDefaultSRTProtectionProfiles(srtpProtectionProfiles, profiles)
▸ setRawTx(options)
▸ setThreadName(name)
▸ setPriority(priority)
▸ setIceTimeout(timeout)
▸ getLocalPort()
▸ createTransport(remoteInfo, localInfo, options)
▸ getLocalCandidates()
▸ getDTLSFingerprint()
▸ createOffer(capabilities)
▸ createPeerConnectionServer(tm, capabilities)
▸ createActiveSpeakerMultiplexer(streamOrTracks)
▸ mirrorIncomingStream(incomingStream)
▸ mirrorIncomingStreamTrack(incomingStreamTrack)
▸ createSDPManager(sdpSemantics, capabilities)
▸ stop()
Events
▸ stopped

Transport

A transport represent a connection between a local ICE candidate and a remote set of ICE candidates over a single DTLS session. The transport object will internally allocate the ICE and DTLS information of the local side in order to signal it to the remote side and establish the connection. Each transport has a set of incoming and outgoing streams that allow to send or receive RTP streams to the remote peer. You must create the incoming streams as signaled on the remote SDP as any incoming RTP with an unknown ssrc will be ignored. When you create an outgoing stream, the transport will allocate internally the ssrcs for the different RTP streams in order to avoid collision. You will be able to retrieve that information from the streams object in order to be able to announce them on the SDP sent to the remote side. In order to decide how to route your streams you must attach the outgoing streams from one transport to the incoming streams of other (or same) transport.

new Transport()

Extends Emitter

Instance Members
▸ dump(filename, options)
▸ stopDump()
▸ getStats()
▸ restartICE(remoteICE, localICE)
▸ getAvailableOutgoingBitrate()
▸ getEstimatedBitrate()
▸ getTotalSentBitrate()
▸ setBandwidthProbing(probe)
▸ setMaxProbingBitrate(bitrate)
▸ enableSenderSideEstimation(enabled)
▸ setRemoteOverrideBitrate(bitrate)
▸ setProbingBitrateLimit(bitrate)
▸ setLocalProperties(rtp)
▸ setRemoteProperties(rtp)
▸ getDTLSState()
▸ getLocalDTLSInfo()
▸ getLocalICEInfo()
▸ getLocalCandidates()
▸ getRemoteDTLSInfo()
▸ getRemoteICEInfo()
▸ getRemoteCandidates()
▸ addRemoteCandidate(candidate)
▸ addRemoteCandidates(candidates)
▸ createOutgoingStream(params)
▸ createOutgoingStreamTrack(media, params)
▸ createIncomingStream(info)
▸ getIncomingStreams()
▸ getIncomingStream(streamId)
▸ getOutgoingStreams()
▸ getOutgoingStream(streamId)
▸ createIncomingStreamTrack(media, params)
▸ publish(incomingStream)
▸ stop()
Events
▸ icetimeout
▸ dtlsstate
▸ remoteicecandidate
▸ targetbitrate
▸ outgoingtrack
▸ incomingtrack
▸ stopped

parseIPv4

parse a dot-separated IPv4 into a normalized address as u32be

parseIPv4(ip: any)
Parameters
ip (any)

stopped

AudioDecoder stopped event

stopped
Parameters
frame (Object)
reader (IncomingStreamTrackReader)

stopped

AudioDecoder stopped event

stopped
Parameters
reader (IncomingStreamTrackReader)

parseCIDR

parse a CIDR into a normalized [address as u32be, prefix length] tuple

parseCIDR(cidr: any)
Parameters
cidr (any)

OutgoingStreamTrack

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

new OutgoingStreamTrack()

Extends Emitter

Instance Members
▸ getId()
▸ getMediaId()
▸ getMedia()
▸ getTrackInfo()
▸ getStats()
▸ getStatsAsync()
▸ getSSRCs()
▸ isMuted()
▸ isAttached()
▸ createTransponder()
▸ attachTo(incomingStreamTrack, layers)
▸ detach()
▸ getTransponder()
▸ stop()
Events
▸ remb
▸ muted
▸ muted
▸ muted
▸ muted
▸ stopped

IncomingStreamTrack

Audio or Video track of a remote media stream

new IncomingStreamTrack()

Extends Emitter

Instance Members
▸ getStatsAsync()
▸ getStats()
▸ getActiveLayers()
▸ getActiveLayersAsync()
▸ getId()
▸ getMediaId()
▸ getTrackInfo()
▸ getSSRCs()
▸ getMedia()
▸ getEncodings()
▸ getEncoding(encodingId)
▸ getDefaultEncoding()
▸ attached()
▸ refresh()
▸ reset()
▸ isMuted()
▸ isAttached()
▸ detached()
▸ setH264ParameterSets(sprop)
▸ hasH264ParameterSets()
▸ getH264ParameterSets()
▸ setMaxWaitTime(maxWaitTime)
▸ resetMaxWaitTime()
▸ stop()
Events
▸ encoding
▸ encoding
▸ attached
▸ detached
▸ stopped

withSocket

Create a dedicated socket on each query, no caching... it's inefficient but more robust, we don't need to give user a way to invalidate the cache, we don't need to be careful when managing refs, subscriptions...

withSocket(callback: any)
Parameters
callback (any)

IncomingStreamTrackSimulcastAdapter

Bundle multiple video track as if they were a single simulcast video track

new IncomingStreamTrackSimulcastAdapter()

Extends Emitter

Instance Members
▸ addTrack(encodingId, incomingStreamTrack)
▸ removeTrack(incomingStreamTrack)
▸ getStats()
▸ getStatsAsync()
▸ getActiveLayers()
▸ getActiveLayersAsync()
▸ getId()
▸ getMediaId()
▸ getTrackInfo()
▸ getSSRCs()
▸ getMedia()
▸ getEncodings()
▸ getEncoding(encodingId)
▸ getDefaultEncoding()
▸ isMuted()
▸ isAttached()
▸ attached()
▸ refresh()
▸ detached()
▸ stop()

extractOne

extractOne
Parameters
list (any)
name (any)

collectRoutingInfoWithRoute

Continuation of collectRoutingInfo once a route has been selected (split to allow reusal from getInterfaceRawConfig).

collectRoutingInfoWithRoute
Parameters
rtNetlink (any)
ifindex (number) Interface
route (any)
dst (number) Resolved next hop address for route