RemoteVideoStats
Statistics of the remote video stream.
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class RemoteVideoStats {
const RemoteVideoStats(
{this.uid,
this.delay,
this.e2eDelay,
this.width,
this.height,
this.receivedBitrate,
this.decoderOutputFrameRate,
this.rendererOutputFrameRate,
this.frameLossRate,
this.packetLossRate,
this.rxStreamType,
this.totalFrozenTime,
this.frozenRate,
this.avSyncTimeMs,
this.totalActiveTime,
this.publishDuration,
this.mosValue,
this.rxVideoBytes});
@JsonKey(name: 'uid')
final int? uid;
@JsonKey(name: 'delay')
final int? delay;
@JsonKey(name: 'e2eDelay')
final int? e2eDelay;
@JsonKey(name: 'width')
final int? width;
@JsonKey(name: 'height')
final int? height;
@JsonKey(name: 'receivedBitrate')
final int? receivedBitrate;
@JsonKey(name: 'decoderOutputFrameRate')
final int? decoderOutputFrameRate;
@JsonKey(name: 'rendererOutputFrameRate')
final int? rendererOutputFrameRate;
@JsonKey(name: 'frameLossRate')
final int? frameLossRate;
@JsonKey(name: 'packetLossRate')
final int? packetLossRate;
@JsonKey(name: 'rxStreamType')
final VideoStreamType? rxStreamType;
@JsonKey(name: 'totalFrozenTime')
final int? totalFrozenTime;
@JsonKey(name: 'frozenRate')
final int? frozenRate;
@JsonKey(name: 'avSyncTimeMs')
final int? avSyncTimeMs;
@JsonKey(name: 'totalActiveTime')
final int? totalActiveTime;
@JsonKey(name: 'publishDuration')
final int? publishDuration;
@JsonKey(name: 'mosValue')
final int? mosValue;
@JsonKey(name: 'rxVideoBytes')
final int? rxVideoBytes;
factory RemoteVideoStats.fromJson(Map<String, dynamic> json) =>
_$RemoteVideoStatsFromJson(json);
Map<String, dynamic> toJson() => _$RemoteVideoStatsToJson(this);
}
Properties
- uid
- User ID that identifies which user's video stream it is.
- delay
- Delay (ms).
Note: Deprecated: In audio and video scenarios with audio-video sync mechanism, you can refer to the values of
networkTransportDelayandjitterBufferDelayin RemoteAudioStats to understand video delay data. - e2eDelay
- End-to-end video delay (ms), i.e., the total time from video capture by the remote user to video rendering by the local user.
- width
- Video stream width (pixels).
- height
- Video stream height (pixels).
- receivedBitrate
- Bitrate received (Kbps) since last statistics.
- decoderOutputFrameRate
- Output frame rate of the remote video decoder, in fps.
- rendererOutputFrameRate
- Output frame rate of the remote video renderer, in fps.
- frameLossRate
- Remote video frame loss rate (%).
- packetLossRate
- Packet loss rate (%) of the remote video after applying anti-packet-loss techniques.
- rxStreamType
- Video stream type, either high or low. See VideoStreamType.
- totalFrozenTime
- Total duration (ms) of video freezes experienced by the remote user after joining the channel. During a call, if the video frame rate is set to no less than 5 fps and the interval between two consecutive rendered frames exceeds 500 ms, it is counted as a video freeze.
- frozenRate
- Percentage (%) of the total duration of video freezes experienced by the remote user after joining the channel relative to the total effective video duration. Effective video duration refers to the time after the remote user joins the channel during which the video is neither stopped nor disabled.
- totalActiveTime
- Effective video duration (ms). The total effective video duration is the time during which the remote user or host has joined the channel and neither stopped sending the video stream nor disabled the video module.
- publishDuration
- Total published duration (ms) of the remote video stream.
- avSyncTimeMs
- Time (ms) that audio leads video.
Note: If the value is negative, it means audio lags behind video.
- mosValue
- Quality of the remote audio stream during the statistics period. The quality is measured using Agora's real-time audio MOS (Mean Opinion Score) method. The return value ranges from [0, 500]; divide by 100 to get the MOS score, ranging from 0 to 5. The higher the score, the better the audio quality. The subjective audio quality corresponding to the Agora MOS score is:
- Greater than 4: Excellent audio quality, clear and smooth.
- 3.5 - 4: Good audio quality, occasional distortion but still clear.
- 3 - 3.5: Fair audio quality, occasional stuttering, not very smooth, requires some attention to hear clearly.
- 2.5 - 3: Poor audio quality, frequent stuttering, requires concentration to hear clearly.
- 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.