Created
March 20, 2020 16:51
-
-
Save christianselig/3aec6df5bd787cb56b023aad08745366 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let asset = AVURLAsset(url: url) | |
let generator = AVAssetImageGenerator(asset: asset) | |
generator.requestedTimeToleranceBefore = CMTime(seconds: 0.05, preferredTimescale: 600) | |
generator.requestedTimeToleranceAfter = CMTime(seconds: 0.05, preferredTimescale: 600) | |
let sizeModifier: CGFloat = 0.1 | |
generator.maximumSize = CGSize(width: 450.0 * sizeModifier, height: 563.0 * sizeModifier) | |
let asset2 = AVURLAsset(url: url) | |
let generator2 = AVAssetImageGenerator(asset: asset2) | |
generator2.requestedTimeToleranceBefore = CMTime(seconds: 0.05, preferredTimescale: 600) | |
generator2.requestedTimeToleranceAfter = CMTime(seconds: 0.05, preferredTimescale: 600) | |
generator2.maximumSize = CGSize(width: 450.0 * sizeModifier, height: 563.0 * sizeModifier) | |
let asset3 = AVURLAsset(url: url) | |
let generator3 = AVAssetImageGenerator(asset: asset3) | |
generator3.requestedTimeToleranceBefore = CMTime(seconds: 0.05, preferredTimescale: 600) | |
generator3.requestedTimeToleranceAfter = CMTime(seconds: 0.05, preferredTimescale: 600) | |
generator3.maximumSize = CGSize(width: 450.0 * sizeModifier, height: 563.0 * sizeModifier) | |
// I know there's around 200 frames, gross code though | |
let timeValues1 = Array(timeValues[0..<62]) | |
let timeValues2 = Array(timeValues[62..<124]) | |
let timeValues3 = Array(timeValues[124..<186]) | |
let startTime = CFAbsoluteTimeGetCurrent() | |
var framesProcessed1 = 0 | |
generator.generateCGImagesAsynchronously(forTimes: timeValues1) { (requestedTime, resultingImage, actualTime, result, error) in | |
framesProcessed1 += 1 | |
if framesProcessed1 == timeValues1.count { | |
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime | |
print("[1] Time elapsed: \(timeElapsed) s.") | |
} | |
} | |
var framesProcessed2 = 0 | |
generator2.generateCGImagesAsynchronously(forTimes: timeValues2) { (requestedTime, resultingImage, actualTime, result, error) in | |
framesProcessed2 += 1 | |
if framesProcessed2 == timeValues2.count { | |
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime | |
print("[2] Time elapsed: \(timeElapsed) s.") | |
} | |
} | |
var framesProcessed3 = 0 | |
generator2.generateCGImagesAsynchronously(forTimes: timeValues3) { (requestedTime, resultingImage, actualTime, result, error) in | |
framesProcessed3 += 1 | |
if framesProcessed3 == timeValues3.count { | |
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime | |
print("[3] Time elapsed: \(timeElapsed) s.") | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment