视频截图:
public func snapshotPlayer(completion: @escaping (CGImage?) -> Void) {
guard let currentTime = player?.currentTime() else {
complete(nil)
return
}
guard let asset = player?.currentItem?.asset else {
completion(nil)
return
}
let generator = AVAssetImageGenerator(asset: asset)
generator.appliesPreferredTrackTransform = true
let time = NSValue(time: currentTime)
generator.generateCGImagesAsynchronously(forTimes: [time]) { (_, rawImage, _, result, error) in
guard let rawImage = rawImage, error == nil else {
DispatchQueue.main.async { completion(nil) }
return
}
DispatchQueue.main.async { completion(rawImage) }
}
}
网友评论