aiyub munshi
aiyub munshi

Reputation: 31

Taking Screenshot of AVPlayer But it works for some videos

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

Answers (1)

aiyub munshi
aiyub munshi

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

Related Questions