2014-11-06 9 views
6

So weit ich habe folgendesWie implementiere ich AVAssetImageGenerator.copyCGImageAtTime in schnellen

let assetUrl = NSURL.URLWithString(self.targetVideoString) 
    let asset: AVAsset = AVAsset.assetWithURL(assetUrl) as AVAsset 
    let imageGenerator = AVAssetImageGenerator(asset: asset); 
    let time : CMTime = CMTimeMakeWithSeconds(1.0, 1) 
    let actualTime : CMTime 
    let myImage: CGImage =imageGenerator.copyCGImageAtTime(requestedTime: time, actualTime:actualTime, error: <#NSErrorPointer#>) 

Die letzte Zeile ist, wo ich verloren gehen ... Ich will einfach ein Bild zum Zeitpunkt 1,0 Sekunden greifen

Antwort

18

Die Funktion wird als

erklärt
func copyCGImageAtTime(requestedTime: CMTime, actualTime: UnsafeMutablePointer<CMTime>, error outError: NSErrorPointer) -> CGImage! 

und man muss passieren (initialisiert) CMTime und NSError? Variablen als „in-out Ausdruck“ mit &:

let assetUrl = NSURL(string: ...) 
let asset: AVAsset = AVAsset.assetWithURL(assetUrl) as AVAsset 
let imageGenerator = AVAssetImageGenerator(asset: asset); 
let time = CMTimeMakeWithSeconds(1.0, 1) 

var actualTime : CMTime = CMTimeMake(0, 0) 
var error : NSError? 
let myImage = imageGenerator.copyCGImageAtTime(time, actualTime: &actualTime, error: &error) 

Beachten Sie auch, dass Ihre erste Linie

let assetUrl = NSURL.URLWithString(self.targetVideoString) 

nicht mehr 6.1 mit dem aktuellen Xcode nicht kompiliert.

2

Ab mindestens Xcode 7.0.1 und Swift 2 assetwithURL ist jetzt: let asset = AVAsset(URL: assetURL). Xcode-Fehler war "'AssetWithURL' ist nicht verfügbar: Verwenden Sie Objektkonstruktion 'AVAsset (URL :)'"

5

Mit Swift2.0 imageGenerator.copyCGImageAtTime ist jetzt mit Würfen markiert, so dass Sie die Fehler in einem do - try behandeln müssen - Fangblock.

let asset : AVAsset = AVAsset(URL: yourNSURLtoTheAsset) 
    let imageGenerator = AVAssetImageGenerator(asset: asset) 
    let time = CMTimeMakeWithSeconds(0.5, 1000) 
    var actualTime = kCMTimeZero 
    var thumbnail : CGImageRef? 
    do { 
     thumbnail = try imageGenerator.copyCGImageAtTime(time, actualTime: &actualTime) 
    } 
    catch let error as NSError { 
     print(error.localizedDescription) 
    }