¿Cómo get el tamaño de video para el flujo de HLS dentro de AVPlayer?

Estoy tratando de get la resolución de video cuando se reproduce la transmisión hls. Tengo un jugador típico init:

let urlAsset = AVURLAsset(URL: currentVideoUrl) self.player=AVPlayer(playerItem: AVPlayerItem(asset:urlAsset)) ....... 

Utilizo KVO e bash get el tamaño del video cuando obtengo el estado .ReadyToPlay para AVPlayerItem:

  func resolutionSizeForVideo() { guard let videoTrack = self.player.currentItem?.asset.tracksWithMediaType(AVMediaTypeVideo).first else { return } let size = CGSizeApplyAffineTransform(videoTrack.naturalSize, videoTrack.prefernetworkingTransform) let frameSize = CGSize(width: fabs(size.width), height: fabs(size.height)) print ("video size: \(frameSize)") } 

El problema es que tracksWithMediaType () siempre devuelve la matriz vacía (pero funciona para files que no son de flujo, por ejemplo, para .mov).

¿Cómo puedo get el tamaño (CGRect) del video HLS dentro de AVPlayer?

Las pistas siempre regresarán nulas al usar HLS. Si tiene una subclass UIView que anula su layerClass con un AVPlayerLayer para reproducir el video, puede get el tamaño con

 playerView.layer.videoRect 

Este es el tamaño de solo el video y no la capa completa.

Alternativamente, puede usar KVO para observar la presentaciónTamaño del elemento

 player.addObserver(self, forKeyPath: "currentItem.presentationSize", options: [.Initial, .New], context: nil) 

¿Eres capaz de registrar al less la información de video usando este método?

 func checkVideoRez(videoURL: NSURL) -> Bool { let videoAssetSource = AVAsset.init(URL: videoURL) let videoTrack = videoAssetSource.tracksWithMediaType(AVMediaTypeVideo)[0] let size = videoTrack.naturalSize let txf = videoTrack.prefernetworkingTransform let realVidSize = CGSizeApplyAffineTransform(size, txf) print(videoTrack) print(txf) print(size) print(realVidSize) ... }