import AVFoundation import UIKit extension AVAsset { func generateVideoThumbnail(_ size: CGSize) async throws -> UIImage { try await Task { let assetImgGenerate = AVAssetImageGenerator(asset: self) assetImgGenerate.appliesPreferredTrackTransform = true let time = CMTimeMakeWithSeconds(Float64(1), preferredTimescale: 600) let cgImage = try assetImgGenerate.copyCGImage(at: time, actualTime: nil) let image = UIImage(cgImage: cgImage) let result = try await image.scaleAndCropImage(size) return result }.value } }