jsonwang 3 éve
szülő
commit
5c1381fa81

+ 29 - 28
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

@@ -1113,9 +1113,10 @@ extension PQStuckPointEditerController {
                                       deepCopySticker?.speedRate = tempSpeed
 
                                       //定义临时使用的变量
+                                      //素材分割的开始时间和结束时间
                                       let tempModel_In = lastOutTime
                                       let tempOut = lastOutTime + Float64(tempSpeed) * Float64(finallyStuckPoints[totalClipNum + 1 + clipindex] - finallyStuckPoints[totalClipNum + clipindex])
-
+                                      //素材显示的开始时间和结束时间
                                       let tempTimelineIn = Float64(finallyStuckPoints[totalClipNum + clipindex])
                                       let timelineOut = Float64(finallyStuckPoints[totalClipNum + 1 + clipindex])
 
@@ -1251,22 +1252,19 @@ extension PQStuckPointEditerController {
         //注意推荐时间位置和后面最近的卡点时间与0.3的关系
         //保存丢卡点处理后的卡点信息推荐开始到最后倒数第二个
         let stuckPointsTemp:Array<Float>
-  
-           
-        //最后真正要使用推荐结束时长
-        var realUsedMusicDuration:Float = 0.0
+ 
+        //已经取到的视频素材总长度,用于和原视频素材时长做对比,不够多加一个点
+        var useAssestDuration:Float = 0.0
         switch model {
         case .createStickersModelPoint://跳跃卡点
             stuckPointsTemp  = getUsedStuckPoint(seed: stuckPointMusicData?.speed ?? 0)
-            // L/(n+1)  L -原视觉素材总时长  n-抛留倍数
-            realUsedMusicDuration = Float(selectedTotalDuration) / (Float(maxSpeed) + 1)
-            
+  
             //要拼接的段数
             var clipNum:Int = 0
-            //所有段的时长总和
-            var tempTime:Float = 0.0
+           
             var i:Int = 0
-            while tempTime < Float(selectedTotalDuration) {
+            // L/(n+1)  L -原视觉素材总时长  n-抛留倍数
+            while useAssestDuration < Float(Float(selectedTotalDuration) / (Float(maxSpeed) + 1)) {
             
                 //回环从头取
                 if(i+2 >= stuckPointsTemp.count){
@@ -1274,11 +1272,11 @@ extension PQStuckPointEditerController {
                 }
                 //快速段
                 let LA =  (stuckPointsTemp[i+1] - stuckPointsTemp[i])
-                tempTime = tempTime + Float(LA)
-                if(tempTime > Float(selectedTotalDuration)){ break}
+                useAssestDuration = useAssestDuration + Float(LA)
+                if(useAssestDuration > Float(selectedTotalDuration)){ break}
                 //慢速段
                 let LB = (stuckPointsTemp[i+2] - stuckPointsTemp[i+1])
-                tempTime = tempTime + Float(LB)
+                useAssestDuration = useAssestDuration + Float(LB)
                 i = i + 1
                 clipNum = clipNum + 1
             }
@@ -1309,7 +1307,7 @@ extension PQStuckPointEditerController {
             var i:Int = 0
             var LACount:Int = 0
             var LBCount:Int = 0
-            while realUsedMusicDuration < Float(selectedTotalDuration) && selectedTotalDuration != 0 {
+            while useAssestDuration < Float(selectedTotalDuration) && selectedTotalDuration != 0 {
             
                 //回环从头取
                 if(i+2 > stuckPointsTemp.count){
@@ -1317,15 +1315,15 @@ extension PQStuckPointEditerController {
                 }
                 //快速段
                 let LA = maxSpeed * (stuckPointsTemp[i+1] - stuckPointsTemp[i])
-                realUsedMusicDuration = realUsedMusicDuration + Float(LA)
-                if(realUsedMusicDuration > Float(selectedTotalDuration)){ break}
+                useAssestDuration = useAssestDuration + Float(LA)
+                if(useAssestDuration > Float(selectedTotalDuration)){ break}
                 LACount = LACount + 1
-                BFLog(message: "快速段段段段段段后LACount:\(LACount) realUsedMusicDuration:\(realUsedMusicDuration)")
+                BFLog(message: "快速段段段段段段后LACount:\(LACount) realUsedMusicDuration:\(useAssestDuration)")
                 //慢速段
                 let LB = minSpeed * (stuckPointsTemp[i+2] - stuckPointsTemp[i+1])
-                realUsedMusicDuration = realUsedMusicDuration + Float(LB)
+                useAssestDuration = useAssestDuration + Float(LB)
                 LBCount = LBCount + 1
-                BFLog(message: "慢速段段段段段段后LACount:\(LACount) realUsedMusicDuration:\(realUsedMusicDuration)")
+                BFLog(message: "慢速段段段段段段后LACount:\(LACount) realUsedMusicDuration:\(useAssestDuration)")
                 
                 i = i + 1
             }
@@ -1337,7 +1335,7 @@ extension PQStuckPointEditerController {
                 finallyStuckPoints.append(a + b)
             }
  
-            BFLog(message: "计算后的\(realUsedMusicDuration) LACount:\(LACount) LBCount \(LBCount) 估算时长为:\(selectedTotalDuration * 2 / Float64(maxSpeed + minSpeed))")
+            BFLog(message: "计算后的\(useAssestDuration) LACount:\(LACount) LBCount \(LBCount) 估算时长为:\(selectedTotalDuration * 2 / Float64(maxSpeed + minSpeed))")
        
             break
         case .createStickersModelOnlyMusic://仅音乐
@@ -1345,10 +1343,8 @@ extension PQStuckPointEditerController {
             stuckPointsTemp = getUsedStuckPoint(seed: 1)
             //要拼接的段数
             var clipNum:Int = 0
-            //所有段的时长总和
-            var tempTime:Float = 0.0
             var i:Int = 0
-            while tempTime < Float(selectedTotalDuration) {
+            while useAssestDuration < Float(selectedTotalDuration) {
             
                 //回环从头取
                 if(i+2 >= stuckPointsTemp.count){
@@ -1356,12 +1352,12 @@ extension PQStuckPointEditerController {
                 }
                 //快速段
                 let LA =  (stuckPointsTemp[i+1] - stuckPointsTemp[i])
-                tempTime = tempTime + Float(LA)
+                useAssestDuration = useAssestDuration + Float(LA)
                 clipNum = clipNum + 1
-                if(tempTime > Float(selectedTotalDuration)){ break}
+                if(useAssestDuration > Float(selectedTotalDuration)){ break}
                 //慢速段
                 let LB = (stuckPointsTemp[i+2] - stuckPointsTemp[i+1])
-                tempTime = tempTime + Float(LB)
+                useAssestDuration = useAssestDuration + Float(LB)
                 i = i + 1
                 clipNum = clipNum + 1
             }
@@ -1437,7 +1433,12 @@ extension PQStuckPointEditerController {
             
          }
  
-        //三,计算最后使用的音频时长, 如果不用拼接音频时长度是卡点的倒数第二位时间
+        
+        //三,按原倍速取视频素材长度超过原素材长度处理,要多添加一位卡点做 A B C 处理
+//        if(useAssestDuration < selectedTotalDuration){
+//
+//        }
+        //四,背景音乐时长处理)计算最后使用的音频时长, 如果不用拼接音频时长度是卡点的倒数第二位时间
         let asset = AVURLAsset(url: URL(fileURLWithPath: documensDirectory + (stuckPointMusicData?.localPath ?? "")), options: nil)
  
         //原推荐卡点的倒数第二位时间