Я работаю над OS X-приложением, использующим AVAssetImageGenerator.generateCGImagesAsynchronouslyForTimes
, и он нормально работает нормально. Однако время от времени миниатюра, которую я получаю, содержит только первые несколько пикселей, а остальные зеленые, иногда изображения будут разными оттенками зеленого. Это очень сложно отследить, потому что это не происходит последовательно, но когда это затрагивает примерно половину уменьшенных изображений. Это изображение того, что я ожидаю увидеть:
Но часто это случается:
Вот код, который я использую для создания эскизов:
let assetGenerator = AVAssetImageGenerator(asset: AVURLAsset(URL: url))
assetGenerator.appliesPreferredTrackTransform = true
let time = CMTime(seconds: 0, preferredTimescale: 30)
let handler: AVAssetImageGeneratorCompletionHandler = { _, image, _, res, error in
defer { dispatch_group_leave(self.waitForThumbnail!) }
guard let image = image where res == .Succeeded else {
if let error = error { print(error) }
return
}
let s = CGSize(width: CGImageGetWidth(image), height: CGImageGetHeight(image))
self.thumbnail = NSImage(CGImage: image, size: s)
}
waitForThumbnail = dispatch_group_create()
dispatch_group_enter(waitForThumbnail!)
assetGenerator.maximumSize = maxThumbnailSize
assetGenerator.generateCGImagesAsynchronouslyForTimes([NSValue(CMTime: time)], completionHandler: handler)
И вот как я извлекаю миниатюры:
dispatch_group_wait(file.waitForThumbnail!, DISPATCH_TIME_FOREVER)
dispatch_async(dispatch_get_main_queue()) {
self.imageView.image = file.thumbnail
}
Любая помощь очень ценится, спасибо!