소스 검색

no message

jsonwang 3 년 전
부모
커밋
56dfaad4f3

+ 29 - 12
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -914,6 +914,10 @@ public class BFRecordScreenController: BFBaseViewController {
                         }
                     }
                     jumpTime = model.startTime
+                    
+                    if itemModels[currItemModelIndex].mediaType == .IMAGE {
+                        itemModels[currItemModelIndex].materialDuraion = jumpTime
+                    }
                 }
             } else if action.type == 3 {
                 // 删除录音
@@ -934,8 +938,12 @@ public class BFRecordScreenController: BFBaseViewController {
                         itemModels[currItemModelIndex].titleStickers.insert(titleTuple.0, at: titleTuple.1)
                     }
                 }
+                if itemModels[currItemModelIndex].mediaType == .IMAGE {
+                    itemModels[currItemModelIndex].materialDuraion = itemModels[currItemModelIndex].voiceStickers.last?.endTime ?? 0
+                }
             } else {}
             events.removeLast()
+    
             let dur = itemModels[currItemModelIndex].materialDuraion
             if dur > 0 {
                 changeProgress(progress: Float(jumpTime / dur))
@@ -997,6 +1005,8 @@ public class BFRecordScreenController: BFBaseViewController {
     }
 
     func searchStopAtRecordRange() {
+        pauseTime = currentAssetProgress.seconds
+
         // TODO: 滑动,播放暂停,撤销时,判断是否停止录音区间,是则删除相关录音,画笔,头像,字幕
         let elems = itemModels[currItemModelIndex].voiceStickers.enumerated().filter { elem in
             elem.1.startTime <= self.currentAssetProgress.seconds && elem.1.endTime > self.currentAssetProgress.seconds
@@ -1130,7 +1140,9 @@ public class BFRecordScreenController: BFBaseViewController {
                 self?.assetPlayer?.volume = self?.noSpeakVolume ?? 0
                 didPlayToEndTime(recordedAudio, newItem)
             }
-            _ = recordPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { time in
+            avplayerTimeObserver?.invalidate()
+            avplayerTimeObserver = recordPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { time in
+                BFLog(1, message: "")
                 periodicTimeObserver(time, newItem)
             } as? NSKeyValueObservation
         }
@@ -1176,14 +1188,16 @@ public class BFRecordScreenController: BFBaseViewController {
     func play() {
         BFLog(1, message: "开始播放 \(currentAssetProgress.seconds)")
         // add by ak 播放前设置 AVAudioSession 为播放状态
-        let a = Date()
-        do {
-            try AVAudioSession.sharedInstance().setCategory(.playback)
-            try AVAudioSession.sharedInstance().setActive(true)
-        } catch {
-
+        if AVAudioSession.sharedInstance().category != .playback {
+            let a = Date()
+            do {
+                try AVAudioSession.sharedInstance().setCategory(.playback)
+                try AVAudioSession.sharedInstance().setActive(true)
+            } catch {
+                
+            }
+            BFLog(1, message: "开启session \(Date().timeIntervalSince(a))")
         }
-        BFLog(1, message: "开启session \(Date().timeIntervalSince(a))")
 
         isNormalPlaying = true
         if isEndPlay {
@@ -1288,7 +1302,9 @@ public class BFRecordScreenController: BFBaseViewController {
             assetPlayer?.replaceCurrentItem(with: item)
         } else {
             assetPlayer = AVPlayer(playerItem: item)
-            assetPlayer?.volume = 0
+            assetPlayer?.volume = self.noSpeakVolume
+            
+            avplayerTimeObserver?.invalidate()
             avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { [weak self] time in
                 // 进度监控
                 self?.periodicTimeObserver(item: item, time: time)
@@ -1527,18 +1543,19 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
             // 更新缩略图
             progressThumV.recordItem = recordItem
             progressThumV.isHidden = false
+            progreddL.text = "00:00"
             // 重置指针
             currentAssetProgress = CMTime(seconds: 0, preferredTimescale: 1000)
             // 重置播放器
             assetPlayer?.seek(to: CMTime.zero)
             recordPlayer?.seek(to: CMTime.zero)
-            
             // 重设撤销栈
             events.append(WithDrawModel(type: 0, timestamp: 0))
             itemModels[currItemModelIndex].events = events
             events = itemModels[page].events
             
             // 更新当前page
+            pauseTime = 0
             currItemModelIndex = page
             if recordItem.mediaType == .VIDEO {
                 reloadMaterial(recordItem: recordItem)
@@ -1574,7 +1591,7 @@ public extension BFRecordScreenController {
             }
             isNormalPlaying = true
             playRecord(at: currentAssetProgress, periodicTimeObserver: { [weak self] currentT, currentItem in
-                BFLog(message: "播放第段进度:\(currentT),\(currentItem)")
+                BFLog(1, message: "播放第段进度:\(currentT),\(currentItem)")
                 self?.imageRecordProgress(progress: CMTimeGetSeconds(currentT))
             }, didPlayToEndTime: { [weak self] recordItem, currentItem in
                 BFLog(message: "播放第段结束:\(String(describing: recordItem)),\(String(describing: currentItem))")
@@ -1602,7 +1619,7 @@ public extension BFRecordScreenController {
         } else {
             currentAssetProgress = CMTime(seconds: recordStartPlayTime.seconds + progress, preferredTimescale: 1000)
         }
-        BFLog(message: "图片录音进度:\(progress),currentAssetProgress=\(currentAssetProgress),\(itemModels[currItemModelIndex].materialDuraion)")
+        BFLog(1, message: "图片录音进度:\(progress),currentAssetProgress=\(currentAssetProgress),\(itemModels[currItemModelIndex].materialDuraion)")
         if itemModels[currItemModelIndex].mediaType == .IMAGE {
             DispatchQueue.main.async { [weak self] in
                 self?.progreddL.text = String(format: "%@", (self?.currentAssetProgress.seconds ?? 0).formatDurationToHMS())

+ 4 - 1
BFRecordScreenKit/Classes/RecordScreen/View/BFVideoThumbProgressView.swift

@@ -134,7 +134,10 @@ class BFVideoThumbProgressView: UIView {
                 while (hadGetAll && recordItem.thumbImgs.count < count && images.count > 0) {
                     recordItem.thumbImgs.append(images.last!)
                 }
-                sself.addThumbImages(images: recordItem.thumbImgs)
+                
+                if recordItem.localPath?.contains(videoAsset.url.lastPathComponent) ?? false {
+                    sself.addThumbImages(images: recordItem.thumbImgs)
+                }
             }
         }
     }