How to measure the time-to-first-frame on Android
The time-to-first-frame, also known as the start-up time, is the time between the moment where playback is requested and the moment where the first frame is rendered.
To measure it, measure the time between the play event and the playing event.
Usage
var playEventRegisteredAt = 0L
val playListener = object : EventListener<PlayEvent> {
override fun handleEvent(event: PlayEvent) {
player.removeEventListener(PlayerEventTypes.PLAY, this)
playEventRegisteredAt = System.currentTimeMillis()
}
}
val playingListener = object : EventListener<PlayingEvent> {
override fun handleEvent(event: PlayingEvent) {
player.removeEventListener(PlayerEventTypes.PLAYING, this)
val timeToFirstFrame = System.currentTimeMillis() - playEventRegisteredAt
println("Time-to-first-frame: $timeToFirstFrame")
}
}
player.addEventListener(PlayerEventTypes.PLAY, playListener)
player.addEventListener(PlayerEventTypes.PLAYING, playingListener)