Last active
January 17, 2024 07:24
-
-
Save samuelowino/924aa288379c1ad25e1055331045c5f2 to your computer and use it in GitHub Desktop.
AVAssetGenerator | AVFoundation
This file contains hidden or 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
| /// Generator single thumbnail from video asset | |
| func generateImageThumbnail(videoAsset: AVAsset) async throws -> UIImage { | |
| let generator = AVAssetImageGenerator(asset: videoAsset) | |
| generator.requestTimeToleranceBefore = .zero | |
| generator.requestTimeToleranceAfter = CMTime(seconds: 3, preferedTimeScale: 600) | |
| let thumbnail = try await generator.image(at: time).image | |
| return UIImage(cgImage: thumbnail) | |
| } | |
| /// Generator multiple thumbnails from particular timestamps | |
| func generateImageThumbnails(for times: [CMTime], videoAsset: AVAsset){ | |
| let generator = AVAssetImageGenerator(asset: videoAsset) | |
| for await result in generator.images(for: times) { | |
| switch result { | |
| case .success(requestedTime: let requestedTime, image: let image, actualTime: _): | |
| updateThumbnails(for: requestedTime, with: image) | |
| case .failed(requestedTime: let requestedTime: error: _): | |
| updateThumbnails(for: requestedTime, with: placeholder) | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment