我正在尝试在播放HLS流时获取视频分辨率。 我有典型的播放器初始化:
let urlAsset = AVURLAsset(URL: currentVideoUrl)
self.player=AVPlayer(playerItem: AVPlayerItem(asset:urlAsset))
.......
我使用KVO,当AVPlayerItem的状态为.ReadyToPlay时,我试图获取视频大小:
func resolutionSizeForVideo() {
guard let videoTrack = self.player.currentItem?.asset.tracksWithMediaType(AVMediaTypeVideo).first else
{ return
}
let size = CGSizeApplyAffineTransform(videoTrack.naturalSize, videoTrack.preferredTransform)
let frameSize = CGSize(width: fabs(size.width), height: fabs(size.height))
print ("video size: \(frameSize)")
}
问题在于tracksWithMediaType()总是返回空数组(但对于非流文件有效,例如.mov文件)。
如何获取AVPlayer内播放的HLS视频的大小(CGRect)?