2016-05-14 10 views
0

ich mit diesem Screenshot von avPlayer nehme ..Unter Screenshot von AVPlayer Aber es funktioniert für einige Videos

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) 

Hier, ich bin immer Screenshot aber es ist nicht perfekt, wenn ich will .. Aber für einige Videos es arbeitet für diese dank perfekt .. Bitte leite mich ..

+0

'aber es ist nicht perfekt, wenn ich will .. aber für einige Videos funktioniert es perfect' Was bedeutet das? – Moritz

+0

Eigentlich, oben genannte Methode gab mir nicht richtig screent Schuss, wenn ich will. Sagen wir mal für ein Video, dass es mir Screenshot 1:23 gab und für das andere zeigt es mir 1:25 oder 1:30 –

Antwort

2

die exakte Lösung ... bekam

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 
    } 
+0

Das ist die perfekte Methode um den aktuellen Screenshot vom AVPlayer –

+0

zu bekommen mich – zumzum