@pexip/peer-connection-stats
Enumerations
Interfaces
- CacheStats
- CandidatePair
- Codec
- InboundAudio
- InboundVideo
- MediaSource
- Metrics
- OutboundAudio
- OutboundVideo
- RTCStats
- Remote
- StatsCollector
- StatsCollectorOptions
- StatsSignals
- Stream
- Track
- Transport
- VideoMetrics
Type Aliases
AnyStats
Ƭ AnyStats: CandidatePair | Codec | InboundAudio | InboundVideo | OutboundAudio | OutboundVideo | RTCStats | Remote | Stream | Track | Transport
AudioQualityStats
Ƭ AudioQualityStats: [number, number][]
CallPacketsStats
Ƭ CallPacketsStats: PacketsStats
CallQualityStats
Ƭ CallQualityStats: AudioQualityStats | VideoQualityStats
InboundAudioMetrics
Ƭ InboundAudioMetrics: Metrics
InboundVideoMetrics
Ƭ InboundVideoMetrics: VideoMetrics
NormalizedRTCStats
Ƭ NormalizedRTCStats: InboundAudioMetrics | InboundVideoMetrics | OutboundAudioMetrics | OutboundVideoMetrics
OutboundAudioMetrics
Ƭ OutboundAudioMetrics: Metrics
OutboundVideoMetrics
Ƭ OutboundVideoMetrics: VideoMetrics & { averagePacketSendDelay?: number ; totalPacketSendDelay?: number  }
PacketsStats
Ƭ PacketsStats: [number, number][]
VideoQualityStats
Ƭ VideoQualityStats: number[]
Variables
STATS_SIZE
• Const STATS_SIZE: 60
Functions
addDeltaStats
▸ addDeltaStats(newStats, cache): readonly [{ bitrate?: number ; bytesTransmitted?: number ; codec?: string ; jitter?: number ; kind: "audio" | "video" ; packetsLost: number ; packetsTransmitted: number ; recentPercentageLost?: number ; roundTripTime?: number ; timestamp?: number ; totalPercentageLost?: number ; type: "inbound-rtp" | "outbound-rtp"  } | { bitrate?: number ; bytesTransmitted?: number ; codec?: string ; framesPerSecond?: number ; jitter?: number ; kind: "audio" | "video" ; packetsLost: number ; packetsTransmitted: number ; recentPercentageLost?: number ; resolution?: string ; resolutionHeight?: number ; resolutionWidth?: number ; roundTripTime?: number ; timestamp?: number ; totalPercentageLost?: number ; type: "inbound-rtp" | "outbound-rtp"  } | { averagePacketSendDelay?: number ; bitrate?: number ; bytesTransmitted?: number ; codec?: string ; framesPerSecond?: number ; jitter?: number ; kind: "audio" | "video" ; packetsLost: number ; packetsTransmitted: number ; recentPercentageLost?: number ; resolution?: string ; resolutionHeight?: number ; resolutionWidth?: number ; roundTripTime?: number ; timestamp?: number ; totalPacketSendDelay?: number ; totalPercentageLost?: number ; type: "inbound-rtp" | "outbound-rtp"  }, Quality, CallQualityStats]
Parameters
| Name | Type | 
|---|---|
| newStats | NormalizedRTCStats | 
| cache | CacheStats | 
Returns
readonly [{ bitrate?: number ; bytesTransmitted?: number ; codec?: string ; jitter?: number ; kind: "audio" | "video" ; packetsLost: number ; packetsTransmitted: number ; recentPercentageLost?: number ; roundTripTime?: number ; timestamp?: number ; totalPercentageLost?: number ; type: "inbound-rtp" | "outbound-rtp"  } | { bitrate?: number ; bytesTransmitted?: number ; codec?: string ; framesPerSecond?: number ; jitter?: number ; kind: "audio" | "video" ; packetsLost: number ; packetsTransmitted: number ; recentPercentageLost?: number ; resolution?: string ; resolutionHeight?: number ; resolutionWidth?: number ; roundTripTime?: number ; timestamp?: number ; totalPercentageLost?: number ; type: "inbound-rtp" | "outbound-rtp"  } | { averagePacketSendDelay?: number ; bitrate?: number ; bytesTransmitted?: number ; codec?: string ; framesPerSecond?: number ; jitter?: number ; kind: "audio" | "video" ; packetsLost: number ; packetsTransmitted: number ; recentPercentageLost?: number ; resolution?: string ; resolutionHeight?: number ; resolutionWidth?: number ; roundTripTime?: number ; timestamp?: number ; totalPacketSendDelay?: number ; totalPercentageLost?: number ; type: "inbound-rtp" | "outbound-rtp"  }, Quality, CallQualityStats]
calculateQuality
▸ calculateQuality(stats): Quality
Parameters
| Name | Type | 
|---|---|
| stats | number| [number,number] | 
Returns
createResolver
▸ createResolver(statsReport): Object
The WebRTC stats are given to us as a flat structure (an array of objects that contain id-fields pointing to other objects in the same array).
This class takes such an array as input and can expand an entry so that references become nested objects.
https://www.w3.org/TR/webrtc-stats/#summary https://www.w3.org/TR/webrtc-stats/#rtctatstype-*
Parameters
| Name | Type | 
|---|---|
| statsReport | AnyStats[] | 
Returns
Object
| Name | Type | 
|---|---|
| expand | ( audioIn:InboundAudio) =>InboundAudio(audioOut:OutboundAudio) =>OutboundAudio(videoIn:InboundVideo) =>InboundVideo(videoOut:OutboundVideo) =>OutboundVideo | 
createStatsCollector
▸ createStatsCollector(«destructured»): StatsCollector
Creates stats collector
Parameters
| Name | Type | 
|---|---|
| «destructured» | StatsCollectorOptions | 
Returns
{function to reset stats window, cleanup func}
createStatsSignals
▸ createStatsSignals(scope?): StatsSignals
Create and return all required and optional (if specified with more),
signals for infinity client to work
See
- Signal
- InfinitySignalsOptional
The following signals created by default
- 'onConnected',
- 'onAnswer',
- REQUIRED_STATS_SIGNAL_KEYS
Parameters
| Name | Type | Default value | Description | 
|---|---|---|---|
| scope | string | '' | any scope prefix for the generated signal name, | 
Returns
getQuality
▸ getQuality(stats): Object
Parameters
| Name | Type | 
|---|---|
| stats | CallQualityStats | 
Returns
Object
| Name | Type | 
|---|---|
| goodOrOkQuality | number | 
| quality | Quality | 
| qualityOverTime | Quality[] | 
inboundAudio
▸ inboundAudio(statsData): Metrics
Normalize inbound audio stats
See
InboundAudio
Parameters
| Name | Type | Description | 
|---|---|---|
| statsData | InboundAudio | Raw inbound audio stats | 
Returns
normalized stats for inbound audio from PeerConnection
inboundVideo
▸ inboundVideo(statsData): VideoMetrics
Normalize inbound video stats
See
InboundVideo
Parameters
| Name | Type | Description | 
|---|---|---|
| statsData | InboundVideo | Raw inbound video stats | 
Returns
normalized stats for inbound video from PeerConnection
outboundAudio
▸ outboundAudio(statsData): Metrics
Normalize outbound audio stats
See
OutboundAudio
Parameters
| Name | Type | Description | 
|---|---|---|
| statsData | OutboundAudio | Raw outbound audio stats | 
Returns
normalized stats for outbound audio from PeerConnection
outboundVideo
▸ outboundVideo(statsData): OutboundVideoMetrics
Normalize outbound video stats
See
OutboundVideo
Parameters
| Name | Type | Description | 
|---|---|---|
| statsData | OutboundVideo | Raw outbound video stats | 
Returns
normalized stats for outbound video from PeerConnection
statsFrom
▸ statsFrom(statsReports): undefined | Metrics
Normalize stats into inbound and outbound video and audio stats
Parameters
| Name | Type | Description | 
|---|---|---|
| statsReports | AnyStats[] | reports to for mapping | 
Returns
undefined | Metrics
normalized stats for inbound, outbound audio and video
statsFromRTCPeer
▸ statsFromRTCPeer(rtcPeer): Promise<NormalizedRTCStats>
Gets raw stats from peerConnection and normalized them
https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_Statistics_API
A RTCPeerConnection has getStats()
- getStats() returns promise which resolve to a RTCStatsReport
- RTCStatsReport behaves like an array of RTCStats objects, or more specific RTCRtpStreamStats objects
https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport https://developer.mozilla.org/en-US/docs/Web/API/RTCStats https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpStreamStats
Parameters
| Name | Type | 
|---|---|
| rtcPeer | Object | 
| rtcPeer.getStats | ( selector?:null|MediaStreamTrack) =>Promise<RTCStatsReport> | 
Returns
Promise<NormalizedRTCStats>