2014-11-06 24 views
6

Như vậy đến nay tôi đã sauLàm thế nào để thực hiện AVAssetImageGenerator.copyCGImageAtTime trong nhanh chóng

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#>) 

Dòng cuối cùng là nơi tôi bị lạc ... Tôi chỉ đơn giản là muốn lấy một hình ảnh vào thời điểm 1,0 giây

Trả lời

18

Các hàm được khai báo là

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

và bạn phải vượt qua (khởi tạo) CMTimeNSError? biến là "biểu hiện trong-out" với &: cũng

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) 

Lưu ý rằng dòng đầu tiên của bạn

let assetUrl = NSURL.URLWithString(self.targetVideoString) 

không biên dịch nữa với Xcode hiện 6.1.

2

Ít nhất là Xcode 7.0.1 và Swift 2 assetwithURL hiện là: let asset = AVAsset(URL: assetURL). Lỗi Xcode là "'assetWithURL' không khả dụng: sử dụng công cụ xây dựng đối tượng 'AVAsset (URL :)'"

5

Với Swift2.0 imageGenerator.copyCGImageAtTime giờ đây được đánh dấu bằng cách ném để bạn phải xử lý lỗi trong khi thực hiện - thử - bắt khối.

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) 
    } 
Các vấn đề liên quan