| 
					
				 | 
			
			
				@@ -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) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //原推荐卡点的倒数第二位时间 
			 |