| 
					
				 | 
			
			
				@@ -69,6 +69,11 @@ class PQStuckPointEditerController: PQBaseViewController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var finallyStuckPoints: Array = Array<Float>.init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 最终使用的音频时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var finallyUserAudioTime: Float = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 注意推荐时间位置和后面最近的卡点时间与0.3的关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 保存丢卡点处理后的卡点信息推荐开始到最后倒数第二个 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 经过档位处理后的卡点信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var stuckPointsTemp: Array = Array<Float>.init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 下一步 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     lazy var nextBtn: UIButton = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let nextBtn = UIButton(type: .custom) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1150,12 +1155,6 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         for sticker in section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if sticker.type == StickerType.VIDEO.rawValue { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 let asset: AVURLAsset = AVURLAsset(url: URL(fileURLWithPath: documensDirectory + sticker.locationPath), options: nil) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                                var realUsedMusicDuration = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                                if(model == .createStickersModelOnlyMusic){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                                    sticker.clipCount = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 BFLog(message: "单个视频\(sticker.locationPath)时长::\(CMTimeGetSeconds(asset.duration)) ,clipNum is:\(sticker.clipCount)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 var lastOutTime: Float64 = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 for clipindex in 0 ... sticker.clipCount  { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1230,13 +1229,13 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 totalClipNum = totalClipNum + sticker.clipCount 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } else if sticker.type == StickerType.IMAGE.rawValue { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if totalClipNum + 1 >= finallyStuckPoints.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    BFLog(message: "数据出现错误!!!查正") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if totalClipNum + 2 >= finallyStuckPoints.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    BFLog(message: "数据出现错误!!!查正")//155.318253 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 sticker.generateDefaultValues() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                sticker.timelineIn = Float64(finallyStuckPoints[totalClipNum]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                sticker.timelineOut = Float64(finallyStuckPoints[totalClipNum + 1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                sticker.timelineIn = Float64(finallyStuckPoints[totalClipNum + 1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                sticker.timelineOut = Float64(finallyStuckPoints[totalClipNum + 2]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 totalClipNum = totalClipNum + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 stickers.append(sticker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 BFLog(message: "测试人员创建 sticker  crilp is in 图片 \(String(format: "%.6f", sticker.model_in))  out  \(String(format: "%.6f", sticker.out)) ,分段素材时长:\(String(format: "%.6f", (sticker.out) - (sticker.model_in))) ,分段显示时长:\(String(format: "%.6f", (sticker.timelineOut) - (sticker.timelineIn))),   timelineIN: \(String(format: "%.6f", sticker.timelineIn)) timelineOUT:\(String(format: "%.6f", sticker.timelineOut)) speedRate:\(sticker.speedRate)") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1258,7 +1257,7 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 推荐卡点数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var stuckPoints: Array = Array<Float>.init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var stuckPointsTemp = Array<Float>.init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var pointsTemp = Array<Float>.init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 最后一个卡点时间(原推荐卡点的倒数第二位时间) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let lastPoint = Float((stuckPointMusicData!.rhythmSdata[0].pointTimes[stuckPointMusicData!.rhythmSdata[0].pointTimes.count - 1])) / Float(BASE_FILTER_TIMESCALE) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1266,7 +1265,7 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (index, dunshu) in stuckPointMusicData!.rhythmSdata[0].pointTimes.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if Float64(dunshu) / Float64(BASE_FILTER_TIMESCALE) > (stuckPointMusicData?.startTime ?? 0) && Float64(dunshu) / Float64(BASE_FILTER_TIMESCALE) < Float64(lastPoint) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 BFLog(message: "原所有卡点数:\(index) \(Float(dunshu) / Float(BASE_FILTER_TIMESCALE))") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                stuckPointsTemp.append(Float(dunshu) / Float(BASE_FILTER_TIMESCALE)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pointsTemp.append(Float(dunshu) / Float(BASE_FILTER_TIMESCALE)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1279,10 +1278,10 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 不丢 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if seed == 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            stuckPoints = stuckPointsTemp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            stuckPoints = pointsTemp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 根据档位要丢 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (index, point) in stuckPointsTemp.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (index, point) in pointsTemp.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if index % seed == 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     stuckPoints.append(point) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1311,6 +1310,12 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     func clipPoint(clipCount:Int,oldPoints: Array<Float>)  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BFLog(message: "拼接卡点数:\(clipCount)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //如果是第一次拼接先补第0位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(finallyStuckPoints.count == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            finallyStuckPoints.append(stuckPointsTemp.first ?? 0.0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for i in finallyStuckPoints.count...clipCount + finallyStuckPoints.count  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if ((i % (oldPoints.count - 1)) != 0){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1327,10 +1332,7 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     func dealParameter(model: createStickersModel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 清空上一次使用的卡点数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         finallyStuckPoints.removeAll() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 注意推荐时间位置和后面最近的卡点时间与0.3的关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 保存丢卡点处理后的卡点信息推荐开始到最后倒数第二个 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let stuckPointsTemp: Array<Float> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 已经取到的视频素材总长度,用于和原视频素材时长做对比,不够多加一个点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var useAssestDuration: Float = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         switch model { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1360,7 +1362,7 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 拼接要使用的卡点信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                finallyStuckPoints.append(stuckPointsTemp.first ?? 0.0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 clipPoint(clipCount:clipNum , oldPoints: stuckPointsTemp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1450,12 +1452,7 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 BFLog(message: "卡点数据有错误!!!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if(finallyStuckPoints.count == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                finallyStuckPoints.append(stuckPointsTemp.first ?? 0.0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             //sticker.clipCount + 1 是都先补一位,当不用补时删除最后多的一位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             clipPoint(clipCount: sticker.clipCount , oldPoints: stuckPointsTemp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             BFLog(message: "finallyStuckPoints\(finallyStuckPoints)") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1509,27 +1506,16 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 拼接图片所使用的时长.选择一组图片 按图片数量计算卡点的总时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var oneSelectImageDuration:Float = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if selectedImageDataCount > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //二,最一个卡点在原数组中的位置,从这个位置开始拼接图片所要使用的卡点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var pointIndex = stuckPointsTemp.firstIndex(where: { (point) -> Bool in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                (point == (finallyStuckPoints.last ?? 0).truncatingRemainder(dividingBy: (stuckPointsTemp.last ?? 0))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pointIndex = (pointIndex ?? 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var tempStartTime:Float = -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var tempEndTime:Float = -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for i in 0 ... selectedImageDataCount { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let a = stuckPointsTemp[(i + Int(pointIndex ?? 0)) % stuckPointsTemp.count] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let b = Float((i + Int(pointIndex ?? 0)) / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                finallyStuckPoints.append(a + b) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(tempStartTime == -1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    tempStartTime = a + b 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                tempEndTime = a + b 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            oneSelectImageDuration = tempEndTime - tempStartTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            clipPoint(clipCount:selectedImageDataCount - 1, oldPoints: stuckPointsTemp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //全是图片时数组里放着的一定都是图片的使用的卡点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //定义一次循环的总时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var oneSelectImageDuration:Float = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(selectedDataCount == selectedImageDataCount){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oneSelectImageDuration = (finallyStuckPoints.last ?? 0) - (finallyStuckPoints.first ?? 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 3)素材全是图片时如果时长 < 10s要做轮播处理 
			 |