Преглед на файлове

优化素材时长的获取

harry преди 3 години
родител
ревизия
cad37f16d7

+ 4 - 4
BFRecordScreenKit/Classes/BFRecordItemModel.swift

@@ -21,7 +21,7 @@ public class BFRecordItemModel: NSObject {
     var localPath: String?
     var materialDuraion: Double = 0.0
     var fetchCoverImgCallBack: ((UIImage) -> Void)?
-    var fetchAVUrlAssetCallBack: ((AVURLAsset) -> Void)?
+    var fetchAVUrlAssetCallBack: (() -> Void)?
     var fetchPlayItemCallBack: ((BFRecordItemModel?) -> Void)?
     var dealedDurationRanges = [SplitRecordRange]() // 录音切割的时间区间,合成导出时计算
     public var voiceStickers = [PQVoiceModel]() //
@@ -84,9 +84,10 @@ public class BFRecordItemModel: NSObject {
         PHImageManager.default().requestPlayerItem(forVideo: phasset, options: options, resultHandler: { [weak self] playerItem, _ in
             
             guard let item = playerItem else {
-                cShowHUB(superView: nil, msg: "视频获取失败:\(self?.index ?? 0)")
+                self?.fetchPlayItemCallBack?(self)
                 return
             }
+            self?.materialDuraion =  item.duration.seconds
             self?.playItem = item
             self?.fetchPlayItemCallBack?(self)
         })
@@ -102,10 +103,9 @@ public class BFRecordItemModel: NSObject {
                 return
             }
             if let videoAsset = (asset as? AVURLAsset) {
-                sself.materialDuraion = videoAsset.duration.seconds
                 sself.localPath = (videoAsset.url.absoluteString.removingPercentEncoding)?.replacingOccurrences(of: "file://", with: "")
                 sself.videoAsset = videoAsset
-                sself.fetchAVUrlAssetCallBack?(videoAsset)
+                sself.fetchAVUrlAssetCallBack?()
             }
         })
     }

+ 1 - 1
BFRecordScreenKit/Classes/RecordScreen/View/BFIndirectionProgressView.swift

@@ -17,7 +17,7 @@ class BFIndirectionProgressView: UIView {
     var tmpPercentW: CGFloat = 0
     var percenWidth: CGFloat {
         get {
-            if tmpPercentW <= 0, totalDuration > 0 {
+            if tmpPercentW.isNaN || tmpPercentW.isInfinite || (tmpPercentW <= 0 && totalDuration > 0) {
                 return frame.width / totalDuration
             } else {
                 return tmpPercentW