Browse Source

Add seconds based init and cache key

onevcat 5 years ago
parent
commit
90daa17e9a

+ 3 - 5
Demo/Demo/Kingfisher-Demo/ViewControllers/AVAssetImageGeneratorViewController.swift

@@ -34,13 +34,11 @@ class AVAssetImageGeneratorViewController: UIViewController {
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
 
 
-        let url = URL(string: "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1280_10MG.mp4")!
-        let asset = AVAsset(url: url)
-        let generator = AVAssetImageGenerator(asset: asset)
         let provider = AVAssetImageDataProvider(
         let provider = AVAssetImageDataProvider(
-            assetImageGenerator: generator,
-            time: CMTime(seconds: 14, preferredTimescale: 1)
+            assetURL: URL(string: "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1280_10MG.mp4")!,
+            seconds: 15.0
         )
         )
+
         imageView.kf.setImage(with: provider) { r in
         imageView.kf.setImage(with: provider) { r in
             print(r)
             print(r)
         }
         }

+ 6 - 1
Sources/General/ImageSource/AVAssetImageDataProvider.swift

@@ -50,7 +50,7 @@ public struct AVAssetImageDataProvider: ImageDataProvider {
     }
     }
 
 
     public var cacheKey: String {
     public var cacheKey: String {
-        return "\(internalKey)_\(time.value)"
+        return "\(internalKey)_\(time.seconds)"
     }
     }
 
 
     public init(assetImageGenerator: AVAssetImageGenerator, time: CMTime) {
     public init(assetImageGenerator: AVAssetImageGenerator, time: CMTime) {
@@ -64,6 +64,11 @@ public struct AVAssetImageDataProvider: ImageDataProvider {
         self.init(assetImageGenerator: generator, time: time)
         self.init(assetImageGenerator: generator, time: time)
     }
     }
 
 
+    public init(assetURL: URL, seconds: TimeInterval) {
+        let time = CMTime(seconds: seconds, preferredTimescale: 600)
+        self.init(assetURL: assetURL, time: time)
+    }
+
     public func data(handler: @escaping (Result<Data, Error>) -> Void) {
     public func data(handler: @escaping (Result<Data, Error>) -> Void) {
         assetImageGenerator.generateCGImagesAsynchronously(forTimes: [NSValue(time: time)]) {
         assetImageGenerator.generateCGImagesAsynchronously(forTimes: [NSValue(time: time)]) {
             (requestedTime, image, imageTime, result, error) in
             (requestedTime, image, imageTime, result, error) in