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