Или запилить KVO: наблюдать за AVPlayerItem.loadedTimeRanges, нам нужен нулевой объект в массиве, нужное время достаем вот так: CMTimeRangeGetEnd(range!.CMTimeRangeValue)
или дергать такую функцию
func availableDuration() -> CMTime
{
let range = self.player?.currentItem?.loadedTimeRanges?.first as? NSValue
if (range != nil){
return CMTimeRangeGetEnd(range!.CMTimeRangeValue)
}
return kCMTimeZero
}