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);
}

Attributes

uid
The user ID of the remote user sending the video stream.
delay
Deprecated:
In scenarios where audio and video are synchronized, you can get the video delay data from networkTransportDelay and jitterBufferDelay in RemoteAudioStats.

The video delay (ms).

e2eDelay
End-to-end video latency (ms). That is, the time elapsed from the video capturing on the remote user's end to the receiving and rendering of the video on the local user's end.
width
The width (pixels) of the video.
height
The height (pixels) of the video.
receivedBitrate
The bitrate (Kbps) of the remote video received since the last count.
decoderOutputFrameRate
The frame rate (fps) of decoding the remote video.
rendererOutputFrameRate
The frame rate (fps) of rendering the remote video.
frameLossRate
The packet loss rate (%) of the remote video.
packetLossRate
The packet loss rate (%) of the remote video after using the anti-packet-loss technology.
rxStreamType
The type of the video stream. See VideoStreamType.
totalFrozenTime
The total freeze time (ms) of the remote video stream after the remote user joins the channel. In a video session where the frame rate is set to no less than 5 fps, video freeze occurs when the time interval between two adjacent renderable video frames is more than 500 ms.
frozenRate
The total video freeze time as a percentage (%) of the total time the video is available. The video is considered available as long as that the remote user neither stops sending the video stream nor disables the video module after joining the channel.
totalActiveTime

The total active time (ms) of the video.

As long as the remote user or host neither stops sending the video stream nor disables the video module after joining the channel, the video is available.

publishDuration

The total duration (ms) of the remote video stream.

avSyncTimeMs
The amount of time (ms) that the audio is ahead of the video.
Attention: If this value is negative, the audio is lagging behind the video.