How to measure the time-to-first-frame on iOS
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: Date?
var playListener: EventListener?
var playingListener: EventListener?
playListener = player.addEventListener(type: PlayerEventTypes.PLAY) { [weak self] _ in
guard let self, let playListener = self.playListener else { return }
self.player.removeEventListener(type: PlayerEventTypes.PLAY, listener: playListener)
self.playEventRegisteredAt = Date()
}
playingListener = player.addEventListener(type: PlayerEventTypes.PLAYING) { [weak self] _ in
guard let self, let playingListener = self.playingListener, let playEventRegisteredAt = self.playEventRegisteredAt else { return }
self.player.removeEventListener(type: PlayerEventTypes.PLAYING, listener: playingListener)
let timeToFirstFrame = Date().timeIntervalSince(playEventRegisteredAt)
print("Time-to-first-frame:", timeToFirstFrame, "second(s)")
}