Class PlaybackStats


  • public final class PlaybackStats
    extends Object
    Statistics about playbacks.
    • Field Detail

      • PLAYBACK_STATE_NOT_STARTED

        public static final int PLAYBACK_STATE_NOT_STARTED
        Playback has not started (initial state).
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_JOINING_BACKGROUND

        public static final int PLAYBACK_STATE_JOINING_BACKGROUND
        Playback is buffering in the background for initial playback start.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_JOINING_FOREGROUND

        public static final int PLAYBACK_STATE_JOINING_FOREGROUND
        Playback is buffering in the foreground for initial playback start.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_PLAYING

        public static final int PLAYBACK_STATE_PLAYING
        Playback is actively playing.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_PAUSED

        public static final int PLAYBACK_STATE_PAUSED
        Playback is paused but ready to play.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_SEEKING

        public static final int PLAYBACK_STATE_SEEKING
        Playback is handling a seek.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_BUFFERING

        public static final int PLAYBACK_STATE_BUFFERING
        Playback is buffering to resume active playback.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_PAUSED_BUFFERING

        public static final int PLAYBACK_STATE_PAUSED_BUFFERING
        Playback is buffering while paused.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_SUPPRESSED

        public static final int PLAYBACK_STATE_SUPPRESSED
        Playback is suppressed (e.g. due to audio focus loss).
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_SUPPRESSED_BUFFERING

        public static final int PLAYBACK_STATE_SUPPRESSED_BUFFERING
        Playback is suppressed (e.g. due to audio focus loss) while buffering to resume a playback.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_ENDED

        public static final int PLAYBACK_STATE_ENDED
        Playback has reached the end of the media.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_STOPPED

        public static final int PLAYBACK_STATE_STOPPED
        Playback is stopped and can be restarted.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_FAILED

        public static final int PLAYBACK_STATE_FAILED
        Playback is stopped due a fatal error and can be retried.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_INTERRUPTED_BY_AD

        public static final int PLAYBACK_STATE_INTERRUPTED_BY_AD
        Playback is interrupted by an ad.
        See Also:
        Constant Field Values
      • PLAYBACK_STATE_ABANDONED

        public static final int PLAYBACK_STATE_ABANDONED
        Playback is abandoned before reaching the end of the media.
        See Also:
        Constant Field Values
      • EMPTY

        public static final PlaybackStats EMPTY
        Empty playback stats.
      • playbackCount

        public final int playbackCount
        The number of individual playbacks for which these stats were collected.
      • mediaTimeHistory

        public final List<long[]> mediaTimeHistory
        The media time history as an ordered list of long[2] arrays with [0] being the realtime as returned by SystemClock.elapsedRealtime() and [1] being the media time at this realtime, in milliseconds.
      • firstReportedTimeMs

        public final long firstReportedTimeMs
        The elapsed real-time as returned by SystemClock.elapsedRealtime() of the first reported playback event, or C.TIME_UNSET if no event has been reported.
      • foregroundPlaybackCount

        public final int foregroundPlaybackCount
        The number of playbacks which were the active foreground playback at some point.
      • abandonedBeforeReadyCount

        public final int abandonedBeforeReadyCount
        The number of playbacks which were abandoned before they were ready to play.
      • endedCount

        public final int endedCount
        The number of playbacks which reached the ended state at least once.
      • backgroundJoiningCount

        public final int backgroundJoiningCount
        The number of playbacks which were pre-buffered in the background.
      • totalValidJoinTimeMs

        public final long totalValidJoinTimeMs
        The total time spent joining the playback, in milliseconds, or C.TIME_UNSET if no valid join time could be determined.

        Note that this does not include background joining time. A join time may be invalid if the playback never reached PLAYBACK_STATE_PLAYING or PLAYBACK_STATE_PAUSED, or joining was interrupted by a seek, stop, or error state.

      • validJoinTimeCount

        public final int validJoinTimeCount
        The number of playbacks with a valid join time as documented in totalValidJoinTimeMs.
      • totalPauseCount

        public final int totalPauseCount
        The total number of times a playback has been paused.
      • totalPauseBufferCount

        public final int totalPauseBufferCount
        The total number of times a playback has been paused while rebuffering.
      • totalSeekCount

        public final int totalSeekCount
        The total number of times a seek occurred. This includes seeks happening before playback resumed after another seek.
      • totalRebufferCount

        public final int totalRebufferCount
        The total number of times a rebuffer occurred. This excludes initial joining and buffering after seek.
      • maxRebufferTimeMs

        public final long maxRebufferTimeMs
        The maximum time spent during a single rebuffer, in milliseconds, or C.TIME_UNSET if no rebuffer occurred.
      • adPlaybackCount

        public final int adPlaybackCount
        The number of ad playbacks.
      • totalVideoFormatHeightTimeMs

        public final long totalVideoFormatHeightTimeMs
        The total media time for which video format height data is available, in milliseconds.
      • totalVideoFormatHeightTimeProduct

        public final long totalVideoFormatHeightTimeProduct
        The accumulated sum of all video format heights, in pixels, times the time the format was used for playback, in milliseconds.
      • totalVideoFormatBitrateTimeMs

        public final long totalVideoFormatBitrateTimeMs
        The total media time for which video format bitrate data is available, in milliseconds.
      • totalVideoFormatBitrateTimeProduct

        public final long totalVideoFormatBitrateTimeProduct
        The accumulated sum of all video format bitrates, in bits per second, times the time the format was used for playback, in milliseconds.
      • totalAudioFormatTimeMs

        public final long totalAudioFormatTimeMs
        The total media time for which audio format data is available, in milliseconds.
      • totalAudioFormatBitrateTimeProduct

        public final long totalAudioFormatBitrateTimeProduct
        The accumulated sum of all audio format bitrates, in bits per second, times the time the format was used for playback, in milliseconds.
      • initialVideoFormatHeightCount

        public final int initialVideoFormatHeightCount
        The number of playbacks with initial video format height data.
      • initialVideoFormatBitrateCount

        public final int initialVideoFormatBitrateCount
        The number of playbacks with initial video format bitrate data.
      • totalInitialVideoFormatHeight

        public final int totalInitialVideoFormatHeight
        The total initial video format height for all playbacks, in pixels, or C.LENGTH_UNSET if no initial video format data is available.
      • totalInitialVideoFormatBitrate

        public final long totalInitialVideoFormatBitrate
        The total initial video format bitrate for all playbacks, in bits per second, or C.LENGTH_UNSET if no initial video format data is available.
      • initialAudioFormatBitrateCount

        public final int initialAudioFormatBitrateCount
        The number of playbacks with initial audio format bitrate data.
      • totalInitialAudioFormatBitrate

        public final long totalInitialAudioFormatBitrate
        The total initial audio format bitrate for all playbacks, in bits per second, or C.LENGTH_UNSET if no initial audio format data is available.
      • totalBandwidthTimeMs

        public final long totalBandwidthTimeMs
        The total time for which bandwidth measurement data is available, in milliseconds.
      • totalBandwidthBytes

        public final long totalBandwidthBytes
        The total bytes transferred during totalBandwidthTimeMs.
      • totalDroppedFrames

        public final long totalDroppedFrames
        The total number of dropped video frames.
      • totalAudioUnderruns

        public final long totalAudioUnderruns
        The total number of audio underruns.
      • fatalErrorPlaybackCount

        public final int fatalErrorPlaybackCount
        The total number of playback with at least one fatal error. Errors are fatal if playback stopped due to this error.
      • fatalErrorCount

        public final int fatalErrorCount
        The total number of fatal errors. Errors are fatal if playback stopped due to this error.
      • nonFatalErrorCount

        public final int nonFatalErrorCount
        The total number of non-fatal errors. Error are non-fatal if playback can recover from the error without stopping.
    • Method Detail

      • getPlaybackStateDurationMs

        public long getPlaybackStateDurationMs​(@com.google.android.exoplayer2.analytics.PlaybackStats.PlaybackState int playbackState)
        Returns the total time spent in a given PlaybackStats.PlaybackState, in milliseconds.
        Parameters:
        playbackState - A PlaybackStats.PlaybackState.
        Returns:
        Total spent in the given playback state, in milliseconds
      • getPlaybackStateAtTime

        public @com.google.android.exoplayer2.analytics.PlaybackStats.PlaybackState int getPlaybackStateAtTime​(long realtimeMs)
        Returns the PlaybackStats.PlaybackState at the given time.
        Parameters:
        realtimeMs - The time as returned by SystemClock.elapsedRealtime().
        Returns:
        The PlaybackStats.PlaybackState at that time, or PLAYBACK_STATE_NOT_STARTED if the given time is before the first known playback state in the history.
      • getMediaTimeMsAtRealtimeMs

        public long getMediaTimeMsAtRealtimeMs​(long realtimeMs)
        Returns the estimated media time at the given realtime, in milliseconds, or C.TIME_UNSET if the media time history is unknown.
        Parameters:
        realtimeMs - The realtime as returned by SystemClock.elapsedRealtime().
        Returns:
        The estimated media time in milliseconds at this realtime, C.TIME_UNSET if no estimate can be given.
      • getMeanJoinTimeMs

        public long getMeanJoinTimeMs()
        Returns the mean time spent joining the playback, in milliseconds, or C.TIME_UNSET if no valid join time is available. Only includes playbacks with valid join times as documented in totalValidJoinTimeMs.
      • getTotalJoinTimeMs

        public long getTotalJoinTimeMs()
        Returns the total time spent joining the playback in foreground, in milliseconds. This does include invalid join times where the playback never reached PLAYBACK_STATE_PLAYING or PLAYBACK_STATE_PAUSED, or joining was interrupted by a seek, stop, or error state.
      • getTotalPlayTimeMs

        public long getTotalPlayTimeMs()
        Returns the total time spent actively playing, in milliseconds.
      • getMeanPlayTimeMs

        public long getMeanPlayTimeMs()
        Returns the mean time spent actively playing per foreground playback, in milliseconds, or C.TIME_UNSET if no playback has been in foreground.
      • getTotalPausedTimeMs

        public long getTotalPausedTimeMs()
        Returns the total time spent in a paused state, in milliseconds.
      • getMeanPausedTimeMs

        public long getMeanPausedTimeMs()
        Returns the mean time spent in a paused state per foreground playback, in milliseconds, or C.TIME_UNSET if no playback has been in foreground.
      • getTotalRebufferTimeMs

        public long getTotalRebufferTimeMs()
        Returns the total time spent rebuffering, in milliseconds. This excludes initial join times, buffer times after a seek and buffering while paused.
      • getMeanRebufferTimeMs

        public long getMeanRebufferTimeMs()
        Returns the mean time spent rebuffering per foreground playback, in milliseconds, or C.TIME_UNSET if no playback has been in foreground. This excludes initial join times, buffer times after a seek and buffering while paused.
      • getMeanSingleRebufferTimeMs

        public long getMeanSingleRebufferTimeMs()
        Returns the mean time spent during a single rebuffer, in milliseconds, or C.TIME_UNSET if no rebuffer was recorded. This excludes initial join times and buffer times after a seek.
      • getTotalSeekTimeMs

        public long getTotalSeekTimeMs()
        Returns the total time spent from the start of a seek until playback is ready again, in milliseconds.
      • getMeanSeekTimeMs

        public long getMeanSeekTimeMs()
        Returns the mean time spent per foreground playback from the start of a seek until playback is ready again, in milliseconds, or C.TIME_UNSET if no playback has been in foreground.
      • getMeanSingleSeekTimeMs

        public long getMeanSingleSeekTimeMs()
        Returns the mean time spent from the start of a single seek until playback is ready again, in milliseconds, or C.TIME_UNSET if no seek occurred.
      • getTotalWaitTimeMs

        public long getTotalWaitTimeMs()
        Returns the total time spent actively waiting for playback, in milliseconds. This includes all join times, rebuffer times and seek times, but excludes times without user intention to play, e.g. all paused states.
      • getMeanWaitTimeMs

        public long getMeanWaitTimeMs()
        Returns the mean time spent actively waiting for playback per foreground playback, in milliseconds, or C.TIME_UNSET if no playback has been in foreground. This includes all join times, rebuffer times and seek times, but excludes times without user intention to play, e.g. all paused states.
      • getTotalPlayAndWaitTimeMs

        public long getTotalPlayAndWaitTimeMs()
        Returns the total time spent playing or actively waiting for playback, in milliseconds.
      • getMeanPlayAndWaitTimeMs

        public long getMeanPlayAndWaitTimeMs()
        Returns the mean time spent playing or actively waiting for playback per foreground playback, in milliseconds, or C.TIME_UNSET if no playback has been in foreground.
      • getTotalElapsedTimeMs

        public long getTotalElapsedTimeMs()
        Returns the total time covered by any playback state, in milliseconds.
      • getMeanElapsedTimeMs

        public long getMeanElapsedTimeMs()
        Returns the mean time covered by any playback state per playback, in milliseconds, or C.TIME_UNSET if no playback was recorded.
      • getAbandonedBeforeReadyRatio

        public float getAbandonedBeforeReadyRatio()
        Returns the ratio of foreground playbacks which were abandoned before they were ready to play, or 0.0 if no playback has been in foreground.
      • getEndedRatio

        public float getEndedRatio()
        Returns the ratio of foreground playbacks which reached the ended state at least once, or 0.0 if no playback has been in foreground.
      • getMeanPauseCount

        public float getMeanPauseCount()
        Returns the mean number of times a playback has been paused per foreground playback, or 0.0 if no playback has been in foreground.
      • getMeanPauseBufferCount

        public float getMeanPauseBufferCount()
        Returns the mean number of times a playback has been paused while rebuffering per foreground playback, or 0.0 if no playback has been in foreground.
      • getMeanSeekCount

        public float getMeanSeekCount()
        Returns the mean number of times a seek occurred per foreground playback, or 0.0 if no playback has been in foreground. This includes seeks happening before playback resumed after another seek.
      • getMeanRebufferCount

        public float getMeanRebufferCount()
        Returns the mean number of times a rebuffer occurred per foreground playback, or 0.0 if no playback has been in foreground. This excludes initial joining and buffering after seek.
      • getJoinTimeRatio

        public float getJoinTimeRatio()
        Returns the ratio of foreground join time to the total time spent playing and waiting, or 0.0 if no time was spend playing or waiting. This is equivalent to getTotalJoinTimeMs() / getTotalPlayAndWaitTimeMs().
      • getRebufferTimeRatio

        public float getRebufferTimeRatio()
        Returns the ratio of rebuffer time to the total time spent playing and waiting, or 0.0 if no time was spend playing or waiting. This is equivalent to getTotalRebufferTimeMs() / getTotalPlayAndWaitTimeMs().
      • getSeekTimeRatio

        public float getSeekTimeRatio()
        Returns the ratio of seek time to the total time spent playing and waiting, or 0.0 if no time was spend playing or waiting. This is equivalent to getTotalSeekTimeMs() / getTotalPlayAndWaitTimeMs().
      • getRebufferRate

        public float getRebufferRate()
        Returns the rate of rebuffer events, in rebuffers per play time second, or 0.0 if no time was spend playing. This is equivalent to 1.0 / getMeanTimeBetweenRebuffers().
      • getMeanTimeBetweenRebuffers

        public float getMeanTimeBetweenRebuffers()
        Returns the mean play time between rebuffer events, in seconds. This is equivalent to 1.0 / getRebufferRate(). Note that this may return Float.POSITIVE_INFINITY.
      • getMeanInitialVideoFormatHeight

        public int getMeanInitialVideoFormatHeight()
        Returns the mean initial video format height, in pixels, or C.LENGTH_UNSET if no video format data is available.
      • getMeanInitialVideoFormatBitrate

        public int getMeanInitialVideoFormatBitrate()
        Returns the mean initial video format bitrate, in bits per second, or C.LENGTH_UNSET if no video format data is available.
      • getMeanInitialAudioFormatBitrate

        public int getMeanInitialAudioFormatBitrate()
        Returns the mean initial audio format bitrate, in bits per second, or C.LENGTH_UNSET if no audio format data is available.
      • getMeanVideoFormatHeight

        public int getMeanVideoFormatHeight()
        Returns the mean video format height, in pixels, or C.LENGTH_UNSET if no video format data is available. This is a weighted average taking the time the format was used for playback into account.
      • getMeanVideoFormatBitrate

        public int getMeanVideoFormatBitrate()
        Returns the mean video format bitrate, in bits per second, or C.LENGTH_UNSET if no video format data is available. This is a weighted average taking the time the format was used for playback into account.
      • getMeanAudioFormatBitrate

        public int getMeanAudioFormatBitrate()
        Returns the mean audio format bitrate, in bits per second, or C.LENGTH_UNSET if no audio format data is available. This is a weighted average taking the time the format was used for playback into account.
      • getMeanBandwidth

        public int getMeanBandwidth()
        Returns the mean network bandwidth based on transfer measurements, in bits per second, or C.LENGTH_UNSET if no transfer data is available.
      • getDroppedFramesRate

        public float getDroppedFramesRate()
        Returns the mean rate at which video frames are dropped, in dropped frames per play time second, or 0.0 if no time was spent playing.
      • getAudioUnderrunRate

        public float getAudioUnderrunRate()
        Returns the mean rate at which audio underruns occurred, in underruns per play time second, or 0.0 if no time was spent playing.
      • getFatalErrorRatio

        public float getFatalErrorRatio()
        Returns the ratio of foreground playbacks which experienced fatal errors, or 0.0 if no playback has been in foreground.
      • getFatalErrorRate

        public float getFatalErrorRate()
        Returns the rate of fatal errors, in errors per play time second, or 0.0 if no time was spend playing. This is equivalent to 1.0 / getMeanTimeBetweenFatalErrors().
      • getMeanTimeBetweenFatalErrors

        public float getMeanTimeBetweenFatalErrors()
        Returns the mean play time between fatal errors, in seconds. This is equivalent to 1.0 / getFatalErrorRate(). Note that this may return Float.POSITIVE_INFINITY.
      • getMeanNonFatalErrorCount

        public float getMeanNonFatalErrorCount()
        Returns the mean number of non-fatal errors per foreground playback, or 0.0 if no playback has been in foreground.
      • getNonFatalErrorRate

        public float getNonFatalErrorRate()
        Returns the rate of non-fatal errors, in errors per play time second, or 0.0 if no time was spend playing. This is equivalent to 1.0 / getMeanTimeBetweenNonFatalErrors().
      • getMeanTimeBetweenNonFatalErrors

        public float getMeanTimeBetweenNonFatalErrors()
        Returns the mean play time between non-fatal errors, in seconds. This is equivalent to 1.0 / getNonFatalErrorRate(). Note that this may return Float.POSITIVE_INFINITY.