소스 검색

跳跃卡点时长问题

jsonwang 3 년 전
부모
커밋
b3e99a4ba8
1개의 변경된 파일20개의 추가작업 그리고 8개의 파일을 삭제
  1. 20 8
      BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

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

@@ -1275,26 +1275,38 @@ extension PQStuckPointEditerController {
             var clipNum: Int = 0
 
             var i: Int = 0
-            // L/(n+1)  L -原视觉素材总时长  n-抛留倍数
-            while useAssestDuration < Float(Float(selectedTotalDuration) / (Float(maxSpeed) + 1)) {
-                // 回环从头取
+            // L/(n+1)  L -原视觉素材总时长  n-抛留倍数  lastJumpSpeedSelectIndex 是位置 对应的值要+1
+            //根据公式计划出的总时长
+            let jumpTime = Float(selectedTotalDuration) / Float(lastJumpSpeedSelectIndex + 2)
+            
+            while useAssestDuration < Float(jumpTime) {
+                // 回环从头取\
                 if i + 1 >= stuckPointsTemp.count {
                     i = 0
                 }
                 // 快速段
                 let LA = (stuckPointsTemp[i + 1] - stuckPointsTemp[i])
                 useAssestDuration = useAssestDuration + Float(LA)
-                if useAssestDuration > Float(selectedTotalDuration) { break }
-//                //慢速段
-//                let LB = (stuckPointsTemp[i+2] - stuckPointsTemp[i+1])
-//                useAssestDuration = useAssestDuration + Float(LB)
+                
                 i = i + 1
                 clipNum = clipNum + 1
             }
 
             // 拼接要使用的卡点信息
+/
             for i in 0 ... clipNum {
-                finallyStuckPoints.append(stuckPointsTemp[i % stuckPointsTemp.count] + Float(i / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0))
+
+                if(i < stuckPointsTemp.count){
+                    finallyStuckPoints.append(stuckPointsTemp[i])
+                }else{
+                    let duration = (stuckPointsTemp.last ?? 0.0) - (stuckPointsTemp.first ?? 0.0)
+                    let index = i % stuckPointsTemp.count
+                    if((index + 1) < stuckPointsTemp.count){
+                        let a = duration * Float((i / stuckPointsTemp.count)) + stuckPointsTemp[index + 1]
+                        finallyStuckPoints.append(a)
+                    }
+
+                }
             }
 
             break