Ich versuche, Miniaturbilder aus einem Video mit dem folgenden Code zu generieren. Es erzeugt UIImagages, aber die Bilder sind alle zu verschiedenen Zeiten gleich. Für ein Video, das 3 Sekunden dauert, werden beispielsweise 6 Bilder erzeugt, aber alle Bilder haben das gleiche Bild für den Anfang des Videos. Irgendwelche Ideen, was ich falsch gemacht habe?Generiere Bilder von AVAssetImageGenerator
let asset = AVAsset(url: videoURL)
let imageGenerator = AVAssetImageGenerator(asset: asset)
let scale = 2
let step = 1
let duration = Int(CMTimeGetSeconds(asset.duration) * Double(scale))
var epoches = [NSValue]()
for i in stride(from: 1, to: duration, by: step) {
//let time = CMTimeMake(Int64(i), Int32(scale))
let time = CMTimeMakeWithSeconds(Double(i)/Double(scale), Int32(scale))
let cgImage = try! imageGenerator.copyCGImage(at: time, actualTime: nil)
let uiImage = UIImage(cgImage: cgImage)
self?.imagePool.append(uiImage)
epoches.append(NSValue(time: time))
}
wirkt wie ein Zauber! Danke Mann –
Für mich war es nutzlos, Nenner zu ändern, aber das Einstellen kleinerer Zähler wie CMTimeMake (0,01, 1) hat den Trick gemacht. – Varrry
Seltsam! Was Sie getan haben _sollte_ äquivalent zu 'CMTimeMake (1, 100)' sein! –