Skip to content

LocalTrack

Defined in: client-sdk-js/src/track/LocalTrack.ts:19

A typed wrapper over Node’s EventEmitter.

Extends EventEmitter with declare overrides so that emit, on, off, etc. are type-safe without introducing circular-reference issues that arise when using typed-emitter directly in extends clauses whose event maps reference the class itself.

Runtime behaviour is 100% EventEmitter; this class adds zero runtime code.

new LocalTrack(
kind,
mediaStreamTrack,
source?,
constraints?,
userProvided?
): LocalTrack;

Defined in: client-sdk-js/src/track/LocalTrack.ts:37

TrackKind

MediaStreamTrack

TrackSource

MediaTrackConstraints

boolean = false

LocalTrack

Track.constructor

protected _currentBitrate: number = 0;

Defined in: client-sdk-js/src/track/Track.ts:43

Track._currentBitrate


protected _isMuted: boolean = false;

Defined in: client-sdk-js/src/track/Track.ts:37

Track._isMuted


protected _mediaStreamTrack: MediaStreamTrack;

Defined in: client-sdk-js/src/track/Track.ts:31

Track._mediaStreamTrack


protected _prevBytes: number = 0;

Defined in: client-sdk-js/src/track/Track.ts:47

Previous byte count from the last monitor sample.

Track._prevBytes


protected _prevStatsTime: number = 0;

Defined in: client-sdk-js/src/track/Track.ts:48

Track._prevStatsTime


protected _processor?: TrackProcessor<TrackKind>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:22


addListener: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:37

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

Track.addListener


attachedElements: HTMLMediaElement[] = [];

Defined in: client-sdk-js/src/track/Track.ts:41

Track.attachedElements


emit: <E>(event, ...args) => boolean;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:17

E extends | Muted | Unmuted | Ended | ElementAttached | ElementDetached | AudioPlaybackStarted | AudioPlaybackFailed | VideoPlaybackStarted | VideoPlaybackFailed | VisibilityChanged | VideoDimensionsChanged | UpstreamPaused | UpstreamResumed | AudioSilenceDetected | StreamStateChanged | TimeSyncUpdate

E

…Parameters<TrackEvents[E]>

boolean

Track.emit


kind: TrackKind;

Defined in: client-sdk-js/src/track/Track.ts:27

Track.kind


listenerCount: (event) => number;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:57

string | number

number

Track.listenerCount


listeners: <E>(event) => E extends keyof TrackEvents ? TrackEvents[E][] : ((...args) => void)[];

Defined in: client-sdk-js/src/utils/typedEmitter.ts:49

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E][] : ((…args) => void)[]

Track.listeners


protected monitorInterval?: number;

Defined in: client-sdk-js/src/track/Track.ts:44

Track.monitorInterval


off: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:32

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

Track.off


on: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:22

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

Track.on


once: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:27

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

Track.once


protected pauseUpstreamLock: Mutex;

Defined in: client-sdk-js/src/track/LocalTrack.ts:35


protected processorElement?: HTMLMediaElement;

Defined in: client-sdk-js/src/track/LocalTrack.ts:23


rawListeners: <E>(event) => E extends keyof TrackEvents ? TrackEvents[E][] : ((...args) => void)[];

Defined in: client-sdk-js/src/utils/typedEmitter.ts:53

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E][] : ((…args) => void)[]

Track.rawListeners


removeAllListeners: (event?) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:47

string | number

this

Track.removeAllListeners


removeListener: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:42

E extends string | number

E

E extends keyof TrackEvents ? TrackEvents[E] : (…args) => void

this

Track.removeListener


sid?: string;

Defined in: client-sdk-js/src/track/Track.ts:29

Track.sid


source: TrackSource;

Defined in: client-sdk-js/src/track/Track.ts:28

Track.source


protected trackChangeLock: Mutex;

Defined in: client-sdk-js/src/track/LocalTrack.ts:34


static defaultMaxListeners: number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:5

Track.defaultMaxListeners

get constraints(): MediaTrackConstraints | undefined;

Defined in: client-sdk-js/src/track/LocalTrack.ts:69

Current capture constraints.

MediaTrackConstraints | undefined


get currentBitrate(): number;

Defined in: client-sdk-js/src/track/Track.ts:77

Current bitrate in bits per second, updated by the monitor.

number

Track.currentBitrate


get dimensions(): TrackDimensions | undefined;

Defined in: client-sdk-js/src/track/LocalTrack.ts:77

Video dimensions from the current track settings. Returns undefined for audio tracks.

TrackDimensions | undefined


get id(): string;

Defined in: client-sdk-js/src/track/LocalTrack.ts:64

The MediaStreamTrack id.

string


get isLocal(): boolean;

Defined in: client-sdk-js/src/track/LocalTrack.ts:59

boolean

Track.isLocal


get isMuted(): boolean;

Defined in: client-sdk-js/src/track/Track.ts:88

Whether the track is currently muted. This reflects the publisher’s intent and is independent of consumer pause state or streamState.

boolean

Track.isMuted


get isUpstreamPaused(): boolean;

Defined in: client-sdk-js/src/track/LocalTrack.ts:85

Whether upstream publishing has been paused via pauseUpstream.

boolean


get isUserProvided(): boolean;

Defined in: client-sdk-js/src/track/LocalTrack.ts:90

Whether the track was provided by the user (not managed by the SDK).

boolean


get mediaStreamTrack(): MediaStreamTrack;

Defined in: client-sdk-js/src/track/LocalTrack.ts:55

Returns the processed track if a processor is active, otherwise the raw source track. Consumers should use this for playback and publishing.

MediaStreamTrack

Track.mediaStreamTrack


get streamState(): StreamState;

Defined in: client-sdk-js/src/track/Track.ts:98

The current stream state of the track. StreamState.Active means the server is actively forwarding media; StreamState.Paused means the server has temporarily stopped forwarding (e.g. bandwidth limits). This is separate from isMuted, which reflects the publisher’s intent.

StreamState

Track.streamState

addVisibilityListener(): void;

Defined in: client-sdk-js/src/track/LocalTrack.ts:471

Start listening for visibility changes (should be called after publishing).

void


attach(element?): HTMLMediaElement;

Defined in: client-sdk-js/src/track/Track.ts:156

HTMLMediaElement

HTMLMediaElement

Track.attach


detach(element?): HTMLMediaElement[];

Defined in: client-sdk-js/src/track/Track.ts:199

HTMLMediaElement

HTMLMediaElement[]

Track.detach


protected detachEndedListener(track): void;

Defined in: client-sdk-js/src/track/Track.ts:72

Detach the base-class ‘ended’ listener from the given track.

MediaStreamTrack

void

Track.detachEndedListener


eventNames(): (string | number)[];

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:7

(string | number)[]

Track.eventNames


getDeviceId(): Promise<string | undefined>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:267

Get the device ID currently used by this track.

Promise<string | undefined>


getMaxListeners(): number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:9

number

Track.getMaxListeners


getProcessor():
| TrackProcessor<TrackKind>
| undefined;

Defined in: client-sdk-js/src/track/LocalTrack.ts:105

Returns the currently active processor, or undefined.

| TrackProcessor<TrackKind> | undefined


getRTCStatsReport(): Promise<RTCStatsReport | undefined>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:259

Gets the RTCStatsReport for the underlying RTP sender.

Promise<RTCStatsReport | undefined>


getSourceTrackSettings(): MediaTrackSettings;

Defined in: client-sdk-js/src/track/LocalTrack.ts:114

Returns the settings of the original source track, ignoring any active processor. Useful when you need the real capture resolution or device info regardless of post-processing.

MediaTrackSettings


protected monitorStats(
getStats,
reportType,
bytesField
): Promise<void>;

Defined in: client-sdk-js/src/track/Track.ts:130

Samples RTP bytes from a stats report and updates currentBitrate. Shared by local (producer/outbound) and remote (consumer/inbound) tracks: they only differ in which report type and byte field to read.

() => Promise<RTCStatsReport> | undefined

returns the underlying transport/producer/consumer stats, or undefined when the source is already closed.

string

the RTC stats report type to aggregate (e.g. outbound-rtp).

string

the byte field name on that report (e.g. bytesSent).

Promise<void>

Track.monitorStats


mute(): void;

Defined in: client-sdk-js/src/track/LocalTrack.ts:209

Mute the track (disables the MediaStreamTrack).

void


protected onEnded(): void;

Defined in: client-sdk-js/src/track/LocalTrack.ts:129

Hook fired when the underlying MediaStreamTrack ends.

void

Track.onEnded


protected onEndedListener(): void;

Defined in: client-sdk-js/src/track/Track.ts:62

void

Track.onEndedListener


pauseUpstream(): Promise<void>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:223

Pause publishing to the server without disabling the local MediaStreamTrack. Useful for showing a local preview while not sending to remote participants.

Promise<void>


prependListener(type, listener): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:14

string | number

Listener

this

Track.prependListener


prependOnceListener(type, listener): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:15

string | number

Listener

this

Track.prependOnceListener


replaceTrack(newTrack): Promise<void>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:350

MediaStreamTrack

Promise<void>


restart(constraints?): Promise<void>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:307

MediaTrackConstraints

Promise<void>


resumeUpstream(): Promise<void>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:240

Resume publishing after a call to pauseUpstream.

Promise<void>


setMaxListeners(n): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:8

number

this

Track.setMaxListeners


setProcessor(processor, showProcessedStreamLocally?): Promise<void>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:142

Set a TrackProcessor on this track. Pass undefined to remove the current processor.

| TrackProcessor<TrackKind> | undefined

boolean = true

Promise<void>


protected setTrackMuted(muted): void;

Defined in: client-sdk-js/src/track/LocalTrack.ts:419

boolean

void


stop(): void;

Defined in: client-sdk-js/src/track/LocalTrack.ts:400

void

Track.stop


protected stopMediaTrackQuietly(track): void;

Defined in: client-sdk-js/src/track/LocalTrack.ts:123

Suppresses the TrackEvent.Ended emission for tracks the SDK stops on purpose (device switch, stopOnMute, Safari restart, stop()) so that consumers can treat Ended as an actual device/source failure.

MediaStreamTrack | undefined

void


stopProcessor(): Promise<void>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:189

Stop and remove the current processor.

Promise<void>


unmute(): void;

Defined in: client-sdk-js/src/track/LocalTrack.ts:214

Unmute the track (enables the MediaStreamTrack).

void


waitForDimensions(timeout?): Promise<TrackDimensions>;

Defined in: client-sdk-js/src/track/LocalTrack.ts:277

Wait until the video track reports valid dimensions.

number = DEFAULT_DIMENSIONS_TIMEOUT

Promise<TrackDimensions>

Error if the track is audio or dimensions don’t become available within the timeout.


static listenerCount(emitter, type): number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:4

EventEmitter

string | number

number

Track.listenerCount