Jelajahi Sumber

添加更新finallyStuckPoints 方法

jsonwang 3 tahun lalu
induk
melakukan
3df6289f52

+ 46 - 20
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

@@ -1172,6 +1172,28 @@ extension PQStuckPointEditerController {
 
         return stickers
     }
+    
+    //更新 playeTimeRange & finallyUserAudioTime
+    func updateTimeInfomation(){
+        // 四,背景音乐时长处理)计算最后使用的音频时长, 如果不用拼接音频时长度是卡点的倒数第二位时间
+        let asset = AVURLAsset(url: URL(fileURLWithPath: documensDirectory + (stuckPointMusicData?.localPath ?? "")), options: nil)
+
+        // 原推荐卡点的倒数第二位时间
+        let lastSecondPoint = Float((stuckPointMusicData!.rhythmSdata[0].pointTimes[stuckPointMusicData!.rhythmSdata[0].pointTimes.count - 2])) / Float(BASE_FILTER_TIMESCALE)
+
+        finallyUserAudioTime = Float(lastSecondPoint)
+        if (finallyStuckPoints.last ?? 0) > Float(CMTimeGetSeconds(asset.duration)) {
+            finallyUserAudioTime = Float(finallyStuckPoints.last ?? 0) + (Float(CMTimeGetSeconds(asset.duration)) - Float(lastSecondPoint))
+        }
+
+        playeTimeRange = CMTimeRange(start: CMTime(value: CMTimeValue(Float64(finallyStuckPoints.first ?? 0) * Float64(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE), end: CMTime(value: CMTimeValue((Float64(finallyStuckPoints.last ?? 0)) * Float64(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE))
+
+        for (index, usePoint) in finallyStuckPoints.enumerated() {
+            BFLog(message: "测试人员最后使用的卡点信息 \(index) : \(usePoint)")
+        }
+
+        BFLog(message: "计算后给播放器使用的开始:\(CMTimeGetSeconds(playeTimeRange.start)) 结束时间\(CMTimeGetSeconds(playeTimeRange.end)) 播放总时长:\(CMTimeGetSeconds(playeTimeRange.end) - CMTimeGetSeconds(playeTimeRange.start))")
+    }
 
     /// 创建sticker
     /// - Parameters:
@@ -1214,6 +1236,25 @@ extension PQStuckPointEditerController {
                     if model == .createStickersModelPoint { // 跳跃卡点
                         // 第二种情况:有视频要进行分割
                         let clipFilters = clipVideoMerage(section: section, stuckPoints: finallyStuckPoints)
+                        
+                        //
+                        if(clipFilters.count > finallyStuckPoints.count){
+                            
+                            clipPoint(clipNum: clipFilters.count - finallyStuckPoints.count, oldPoints: finallyStuckPoints)
+                            
+                            // 四,背景音乐时长处理)计算最后使用的音频时长, 如果不用拼接音频时长度是卡点的倒数第二位时间
+                            let asset = AVURLAsset(url: URL(fileURLWithPath: documensDirectory + (stuckPointMusicData?.localPath ?? "")), options: nil)
+
+                        }else if(clipFilters.count < finallyStuckPoints.count){
+                            
+                            while (clipFilters.count < finallyStuckPoints.count) {
+                                finallyStuckPoints.removeLast()
+                            }
+                            
+                        }
+                        //更新最终使用值
+                        updateTimeInfomation()
+                        
                         for (index, point) in finallyStuckPoints.enumerated() {
                             BFLog(message: "aaaaaindexindeindexxindexindexindex \(index) \(point)")
                             if index + 1 < finallyStuckPoints.count, index < clipFilters.count {
@@ -1247,8 +1288,8 @@ extension PQStuckPointEditerController {
                                     sticker.model_in = sticker.model_in - offsetAssetDuration
                                     sticker.out = sticker.out - offsetAssetDuration
                                 }
-
-                                BFLog(message: "跳跃卡点测试人员index is \(index)分割后 创建 filter timelineIn :\(sticker.timelineIn) timelineOut :\(sticker.timelineOut)  in :\(sticker.model_in) out:\(sticker.out) type is \(sticker.type) 显示总时长为:\(sticker.timelineOut - sticker.timelineIn)  裁剪总时长\(sticker.out - sticker.model_in)")
+                                print("跳跃卡点测试人员index is \(index)分割后 创建 filter timelineIn :\(sticker.timelineIn) timelineOut :\(sticker.timelineOut)  in :\(sticker.model_in) out:\(sticker.out) type is \(sticker.type) 显示总时长为:\(sticker.timelineOut - sticker.timelineIn)  裁剪总时长\(sticker.out - sticker.model_in)")
+                            
 
                                 stickers.append(sticker)
                             }
@@ -1650,24 +1691,7 @@ extension PQStuckPointEditerController {
             }
         }
 
-        // 四,背景音乐时长处理)计算最后使用的音频时长, 如果不用拼接音频时长度是卡点的倒数第二位时间
-        let asset = AVURLAsset(url: URL(fileURLWithPath: documensDirectory + (stuckPointMusicData?.localPath ?? "")), options: nil)
-
-        // 原推荐卡点的倒数第二位时间
-        let lastSecondPoint = Float((stuckPointMusicData!.rhythmSdata[0].pointTimes[stuckPointMusicData!.rhythmSdata[0].pointTimes.count - 2])) / Float(BASE_FILTER_TIMESCALE)
-
-        finallyUserAudioTime = Float(lastSecondPoint)
-        if (finallyStuckPoints.last ?? 0) > Float(CMTimeGetSeconds(asset.duration)) {
-            finallyUserAudioTime = Float(finallyStuckPoints.last ?? 0) + (Float(CMTimeGetSeconds(asset.duration)) - Float(lastSecondPoint))
-        }
-
-        playeTimeRange = CMTimeRange(start: CMTime(value: CMTimeValue(Float64(finallyStuckPoints.first ?? 0) * Float64(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE), end: CMTime(value: CMTimeValue((Float64(finallyStuckPoints.last ?? 0)) * Float64(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE))
-
-        for (index, usePoint) in finallyStuckPoints.enumerated() {
-            BFLog(message: "测试人员最后使用的卡点信息 \(index) : \(usePoint)")
-        }
-
-        BFLog(message: "计算后给播放器使用的开始:\(CMTimeGetSeconds(playeTimeRange.start)) 结束时间\(CMTimeGetSeconds(playeTimeRange.end)) 播放总时长:\(CMTimeGetSeconds(playeTimeRange.end) - CMTimeGetSeconds(playeTimeRange.start))")
+       updateTimeInfomation()
     }
 }
 
@@ -1935,6 +1959,8 @@ extension PQStuckPointEditerController {
         }else{
             editModelClick(sender: lastEditModelBtn ?? jumpPointBtn, reportLog: false)
         }
+        
+        updateTimeInfomation()
   
     }
 }