Reputation: 31
I am taking screenshot of avPlayer with this ..
print(startTime)
print(Float64(startTime))
var time: CMTime = CMTimeMakeWithSeconds(Float64(startTime), 100000000)
do {
print(time)
let imageRef: CGImageRef = try imageGenerator.copyCGImageAtTime(time, actualTime: &time)
let thumbnail: UIImage = UIImage(CGImage: imageRef)
UIImageWriteToSavedPhotosAlbum(thumbnail, nil, nil, nil)
Here, I am getting screenshot but its not perfect when I want.. But for some videos it is working perfect.. Please guide me for this thanks..
Upvotes: 0
Views: 1030
Reputation: 31
got the exact Solution...
func screenshotCMTime(cmTime: CMTime) -> (UIImage)?
{
guard let player = player,let asset = player.currentItem?.asset else
{
return nil
}
let imageGenerator = AVAssetImageGenerator(asset: asset)
var timePicture = kCMTimeZero
imageGenerator.appliesPreferredTrackTransform = true
imageGenerator.requestedTimeToleranceAfter = kCMTimeZero
imageGenerator.requestedTimeToleranceBefore = kCMTimeZero
do {
let ref = try imageGenerator.copyCGImageAtTime(cmTime, actualTime: &timePicture)
image = UIImage(CGImage: ref)
}catch {
error as NSError
}
return image
}
Upvotes: 3