RemoteAudioStats

Audio statistics of the remote user.

@JsonSerializable(explicitToJson: true, includeIfNull: false)
class RemoteAudioStats {
  const RemoteAudioStats(
      {this.uid,
      this.quality,
      this.networkTransportDelay,
      this.jitterBufferDelay,
      this.audioLossRate,
      this.numChannels,
      this.receivedSampleRate,
      this.receivedBitrate,
      this.totalFrozenTime,
      this.frozenRate,
      this.mosValue,
      this.totalActiveTime,
      this.publishDuration,
      this.qoeQuality,
      this.qualityChangedReason,
      this.e2eDelay});

  @JsonKey(name: 'uid')
  final int? uid;

  @JsonKey(name: 'quality')
  final int? quality;

  @JsonKey(name: 'networkTransportDelay')
  final int? networkTransportDelay;

  @JsonKey(name: 'jitterBufferDelay')
  final int? jitterBufferDelay;

  @JsonKey(name: 'audioLossRate')
  final int? audioLossRate;

  @JsonKey(name: 'numChannels')
  final int? numChannels;

  @JsonKey(name: 'receivedSampleRate')
  final int? receivedSampleRate;

  @JsonKey(name: 'receivedBitrate')
  final int? receivedBitrate;

  @JsonKey(name: 'totalFrozenTime')
  final int? totalFrozenTime;

  @JsonKey(name: 'frozenRate')
  final int? frozenRate;

  @JsonKey(name: 'mosValue')
  final int? mosValue;

  @JsonKey(name: 'totalActiveTime')
  final int? totalActiveTime;

  @JsonKey(name: 'publishDuration')
  final int? publishDuration;

  @JsonKey(name: 'qoeQuality')
  final int? qoeQuality;

  @JsonKey(name: 'qualityChangedReason')
  final int? qualityChangedReason;

  @JsonKey(name: 'e2eDelay')
  final int? e2eDelay;

  factory RemoteAudioStats.fromJson(Map<String, dynamic> json) =>
      _$RemoteAudioStatsFromJson(json);

  Map<String, dynamic> toJson() => _$RemoteAudioStatsToJson(this);
}

Properties

uid
The user ID of the remote user.
quality
The quality of the audio stream sent by the remote user. See QualityType.
networkTransportDelay
Network delay from the audio sender to the receiver (ms).
jitterBufferDelay
Network delay from the audio receiver to the jitter buffer (ms).
Note: This parameter is not effective when the receiver is an audience member and audienceLatencyLevel in ClientRoleOptions is set to 1.
audioLossRate
Audio frame loss rate (%) of the remote audio stream during the reporting interval.
numChannels
Number of audio channels.
receivedSampleRate
Sampling rate of the received remote audio stream during the reporting interval.
receivedBitrate
Average bitrate (Kbps) of the received remote audio stream during the reporting interval.
totalFrozenTime
Total duration (ms) of audio freezes experienced by the remote user after joining the channel. An audio freeze is counted when the audio frame loss rate exceeds 4%.
frozenRate
Percentage (%) of the total freeze duration relative to the total valid audio duration. Valid audio duration refers to the time after the remote user joins the channel during which audio is not stopped or disabled.
totalActiveTime
Total valid time (ms) from the start of the audio call to this callback for the remote user. Valid time excludes the total time the remote user was in a muted state.
publishDuration
Total publishing duration (ms) of the remote audio stream.
qoeQuality
Subjective experience quality of the local user when receiving remote audio.
qualityChangedReason
Reason for poor subjective experience quality of the local user when receiving remote audio. See ExperiencePoorReason.
mosValue
During the reporting interval, the quality score of the received remote audio stream evaluated by Agora's real-time audio MOS (Mean Opinion Score) method. The return value ranges from [0,500]. Divide the return value by 100 to get the MOS score in the range [0,5], where a higher score indicates better audio quality. The subjective audio quality corresponding to the Agora real-time audio MOS score is as follows:
MOS Score Audio Quality
Greater than 4 Excellent audio quality, clear and smooth.
3.5 - 4 Good audio quality, occasional impairments, but still clear.
3 - 3.5 Fair audio quality, occasional stuttering, not very smooth, requires some effort to understand.
2.5 - 3 Poor audio quality, frequent stuttering, requires focus to understand.
2 - 2.5 Very poor audio quality, occasional noise, partial semantic loss, difficult to communicate.
Less than 2 Extremely poor audio quality, frequent noise, significant semantic loss, communication impossible.
e2eDelay
End-to-end audio delay (ms), i.e., the total time from when the remote user captures the audio to when the local user starts playing it.