| 
					
				 | 
			
			
				@@ -1002,221 +1002,178 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dealParameter(model: model) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 保存滤镜对象数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var stickers: Array = Array<PQEditVisionTrackMaterialsModel>.init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if model == .createStickersModelPoint { //跳跃卡点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for section in sections { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if section.sectionType == "normal" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 当用户上传视觉素材个数大于等于音乐选择区域节拍分割个数时,无需进行视频分割,只显示卡点数-1 个素材 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials().count >= stuckPointMusicData!.rhythmSdata[0].pointTimes.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        for (index, sticker) in section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials().enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if index == stuckPointMusicData!.rhythmSdata[0].pointTimes.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                BFLog(message: "到达卡点数量") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            BFLog(message: "创建 filter start :\(sticker.timelineIn) end :\(sticker.timelineOut) type is \(sticker.type) \(sticker.locationPath)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            sticker.timelineIn = Float64("\(finallyStuckPoints[index])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            sticker.timelineOut = Float64("\(finallyStuckPoints[index + 1])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            BFLog(message: "卡点 间隔 \(sticker.timelineIn - sticker.timelineOut)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            sticker.generateDefaultValues() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            stickers.append(sticker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        // 第一种情况:全是图片,图片回环播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials(type: "video").count == 0, section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials(type: "image").count > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            for (index, point) in finallyStuckPoints.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                let sticker: PQEditVisionTrackMaterialsModel = section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials()[index % section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials().count] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                BFLog(message: "stickerlocationPath sticker : \(sticker.locationPath)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                let stickerjson = sticker.toJSONString(prettyPrint: false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                let deepCopySticker = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: stickerjson!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if deepCopySticker!.type == StickerType.IMAGE.rawValue { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if index + 1 < finallyStuckPoints.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        deepCopySticker!.timelineIn = Float64("\(finallyStuckPoints[index])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        deepCopySticker!.timelineOut = Float64("\(finallyStuckPoints[index + 1])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        if deepCopySticker != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            deepCopySticker?.generateDefaultValues() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            stickers.append(deepCopySticker!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            // 第二种情况:有视频要进行分割 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            let clipFilters = clipVideoMerage(section: section, stuckPoints: finallyStuckPoints) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            for (index, point) in finallyStuckPoints.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                BFLog(message: "aaaaaindexindeindexxindexindexindex \(index) \(point)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if index + 1 < finallyStuckPoints.count, index < clipFilters.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    BFLog(message: "bbbbbindexindeindexxindexindexindex \(index) \(point)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    let sticker: PQEditVisionTrackMaterialsModel = clipFilters[index] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    sticker.timelineIn = Float64("\(finallyStuckPoints[index])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    sticker.timelineOut = Float64("\(finallyStuckPoints[index + 1])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    // 卡点的时间 >  in out 值 这里就会出现鬼畜效果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    let timelineInterval = sticker.timelineOut - sticker.timelineIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    let inOutInterval = sticker.out - sticker.model_in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if timelineInterval > inOutInterval { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        BFLog(message: "实际要显示卡点时长\(timelineInterval) 素材裁剪时长:\(inOutInterval)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        sticker.out = sticker.model_in + timelineInterval 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        // 下面只是 LOG 方便查问题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        let stickerInOut = sticker.out - sticker.model_in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        let stickerTimelineInOut = sticker.timelineOut - sticker.timelineIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        if stickerInOut != stickerTimelineInOut { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            BFLog(message: "sticker.timelineIn \(sticker.timelineIn) stickerTimelineInOut is\(stickerTimelineInOut) stickerInOut is\(stickerInOut) 相差\(stickerTimelineInOut - stickerInOut)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    // out > 素材的总时长in out 进行前移操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    let offsetAssetDuration = sticker.out - sticker.duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if offsetAssetDuration > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        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)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    stickers.append(sticker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }else if (model == .createStickersModelOnlyMusic || model == .createStickersModelSpeed){ //仅音乐 和 跳跃卡点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for section in sections { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if section.sectionType == "normal" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    BFLog(message: "stuckPoints count is \(finallyStuckPoints.count)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 第一种情况:全是图片,图片回环播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials(type: "video").count == 0, section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials(type: "image").count > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        for (index, point) in finallyStuckPoints.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            let sticker: PQEditVisionTrackMaterialsModel = section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials()[index % section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials().count] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            BFLog(message: "stickerlocationPath sticker : \(sticker.locationPath)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            let stickerjson = sticker.toJSONString(prettyPrint: false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            let deepCopySticker = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: stickerjson!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if deepCopySticker!.type == StickerType.IMAGE.rawValue { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if index + 1 < finallyStuckPoints.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    deepCopySticker!.timelineIn = Float64("\(finallyStuckPoints[index])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    deepCopySticker!.timelineOut = Float64("\(finallyStuckPoints[index + 1])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if deepCopySticker != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        deepCopySticker?.generateDefaultValues() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        stickers.append(deepCopySticker!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        //一共裁剪的段数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        var totalClipNum:Int = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        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 i:Int = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                //一个视频切的的段落 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var oneVideoClipNum:Int = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var realUsedMusicDuration = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                while realUsedMusicDuration <= CMTimeGetSeconds(asset.duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    //快速段 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    let LA = maxSpeed * (finallyStuckPoints[i+1] - finallyStuckPoints[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    realUsedMusicDuration = realUsedMusicDuration + Float64(LA) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if(realUsedMusicDuration > CMTimeGetSeconds(asset.duration)){ break} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    oneVideoClipNum = oneVideoClipNum + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    //慢速段 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if(i + 2 >= finallyStuckPoints.count){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    let LB = minSpeed * (finallyStuckPoints[i+2] - finallyStuckPoints[i+1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    realUsedMusicDuration = realUsedMusicDuration + Float64(LB) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    oneVideoClipNum = oneVideoClipNum + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    i = i + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                BFLog(message: "单个视频\(sticker.locationPath)时长::\(CMTimeGetSeconds(asset.duration)) ,clipNum is:\(oneVideoClipNum)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var lastOutTime:Float64 = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                for clipindex in 0 ... oneVideoClipNum - 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    // deep copy sticker model 防止只有一个对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    let stickerjson = sticker.toJSONString(prettyPrint: false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    let deepCopySticker = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: stickerjson!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    // 设置循环模式和适配模式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for section in sections { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if section.sectionType == "normal" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 第一种情况:全是图片,三种模式都进行图片回环播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials(type: "video").count == 0, section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials(type: "image").count > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (index, point) in finallyStuckPoints.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let sticker: PQEditVisionTrackMaterialsModel = section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials()[index % section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials().count] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        BFLog(message: "stickerlocationPath sticker : \(sticker.locationPath)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let stickerjson = sticker.toJSONString(prettyPrint: false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let deepCopySticker = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: stickerjson!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if deepCopySticker!.type == StickerType.IMAGE.rawValue { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if index + 1 < finallyStuckPoints.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                deepCopySticker!.timelineIn = Float64("\(finallyStuckPoints[index])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                deepCopySticker!.timelineOut = Float64("\(finallyStuckPoints[index + 1])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if deepCopySticker != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     deepCopySticker?.generateDefaultValues() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    //当前分段的速度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    var tempSpeed:Float = 1.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if model == .createStickersModelSpeed{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        tempSpeed = (totalClipNum + clipindex) % 2 == 0 ? maxSpeed : minSpeed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                               
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if(totalClipNum + 1 + clipindex < finallyStuckPoints.count){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        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]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        //处理最后一点视频素材不够卡点时长 e.g. 0.3 卡点时长0.5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        if(tempOut > realUsedMusicDuration){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            BFLog(message: "最后一点视频素材不够卡点时长 ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            //最后一点素材时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            let lastAssetDuration = realUsedMusicDuration - tempOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            let pointDuration = timelineOut -  tempTimelineIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            let needSpeed = lastAssetDuration / pointDuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            //当前卡点段为快速 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            if(tempSpeed >= 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                if(needSpeed > 0.4 * Double(tempSpeed)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                    deepCopySticker?.speedRate = tempSpeed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                } else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                    continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            }else{//当前卡点段为慢速 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                if(needSpeed > 0.4 * Double(tempSpeed) && needSpeed > 0.2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                    deepCopySticker?.speedRate = tempSpeed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                } else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                    continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        deepCopySticker?.model_in = tempModel_In 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        deepCopySticker?.out = tempOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        deepCopySticker?.timelineIn = tempTimelineIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        deepCopySticker?.timelineOut = timelineOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        lastOutTime =  deepCopySticker?.out ?? 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    BFLog(message: " 创建 sticker crilp is in \(String(format: "%.6f", deepCopySticker?.model_in ?? 0)) out  \(String(format: "%.6f", deepCopySticker?.out ?? 0)) ,分段素材时长:\(String(format: "%.6f", (deepCopySticker?.out ?? 0) - (deepCopySticker?.model_in ?? 0))) ,分段显示时长:\(String(format: "%.6f", (deepCopySticker?.timelineOut ?? 0) - (deepCopySticker?.timelineIn ?? 0))), 总时长\(CMTimeGetSeconds(asset.duration)) timelineIN: \(String(format: "%.6f", deepCopySticker?.timelineIn ?? 0)) timelineOUT:\(String(format: "%.6f", deepCopySticker?.timelineOut ?? 0)) speedRate:\(deepCopySticker?.speedRate ?? 0.0)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if deepCopySticker != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        stickers.append(deepCopySticker!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                totalClipNum = totalClipNum + oneVideoClipNum - 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } else if sticker.type == StickerType.IMAGE.rawValue { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if(totalClipNum + 1 >= finallyStuckPoints.count){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    BFLog(message: "数据出现错误!!!查正") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    stickers.append(deepCopySticker!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                sticker.generateDefaultValues() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                sticker.timelineIn = Float64(finallyStuckPoints[totalClipNum]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                sticker.timelineOut = Float64(finallyStuckPoints[totalClipNum + 1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                totalClipNum = totalClipNum + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                stickers.append(sticker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else{//第二种情况:视频 + 图片情况、视频要分段+图片按卡点时长创建 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if model == .createStickersModelPoint { //跳跃卡点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        // 第二种情况:有视频要进行分割 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                       let clipFilters = clipVideoMerage(section: section, stuckPoints: finallyStuckPoints) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                       for (index, point) in finallyStuckPoints.enumerated() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                           BFLog(message: "aaaaaindexindeindexxindexindexindex \(index) \(point)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                           if index + 1 < finallyStuckPoints.count, index < clipFilters.count { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               BFLog(message: "bbbbbindexindeindexxindexindexindex \(index) \(point)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               let sticker: PQEditVisionTrackMaterialsModel = clipFilters[index] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               sticker.timelineIn = Float64("\(finallyStuckPoints[index])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               sticker.timelineOut = Float64("\(finallyStuckPoints[index + 1])") ?? 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               // 卡点的时间 >  in out 值 这里就会出现鬼畜效果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               let timelineInterval = sticker.timelineOut - sticker.timelineIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               let inOutInterval = sticker.out - sticker.model_in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               if timelineInterval > inOutInterval { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   BFLog(message: "实际要显示卡点时长\(timelineInterval) 素材裁剪时长:\(inOutInterval)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   sticker.out = sticker.model_in + timelineInterval 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   // 下面只是 LOG 方便查问题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   let stickerInOut = sticker.out - sticker.model_in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   let stickerTimelineInOut = sticker.timelineOut - sticker.timelineIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   if stickerInOut != stickerTimelineInOut { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                       BFLog(message: "sticker.timelineIn \(sticker.timelineIn) stickerTimelineInOut is\(stickerTimelineInOut) stickerInOut is\(stickerInOut) 相差\(stickerTimelineInOut - stickerInOut)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               // out > 素材的总时长in out 进行前移操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               let offsetAssetDuration = sticker.out - sticker.duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               if offsetAssetDuration > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   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)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               stickers.append(sticker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }else if (model == .createStickersModelOnlyMusic || model == .createStickersModelSpeed){ //仅音乐 和 快慢速卡点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        BFLog(message: "stuckPoints count is \(finallyStuckPoints.count)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      //一共裁剪的段数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      var totalClipNum:Int = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      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 i:Int = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              //一个视频切的的段落 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              var oneVideoClipNum:Int = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              var realUsedMusicDuration = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              while realUsedMusicDuration <= CMTimeGetSeconds(asset.duration) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  //快速段 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  let LA = maxSpeed * (finallyStuckPoints[i+1] - finallyStuckPoints[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  realUsedMusicDuration = realUsedMusicDuration + Float64(LA) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  if(realUsedMusicDuration > CMTimeGetSeconds(asset.duration)){ break} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  oneVideoClipNum = oneVideoClipNum + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  //慢速段 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  if(i + 2 >= finallyStuckPoints.count){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  let LB = minSpeed * (finallyStuckPoints[i+2] - finallyStuckPoints[i+1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  realUsedMusicDuration = realUsedMusicDuration + Float64(LB) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  oneVideoClipNum = oneVideoClipNum + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  i = i + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              BFLog(message: "单个视频\(sticker.locationPath)时长::\(CMTimeGetSeconds(asset.duration)) ,clipNum is:\(oneVideoClipNum)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              var lastOutTime:Float64 = 0.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              for clipindex in 0 ... oneVideoClipNum - 1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  // deep copy sticker model 防止只有一个对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  let stickerjson = sticker.toJSONString(prettyPrint: false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  let deepCopySticker = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: stickerjson!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  // 设置循环模式和适配模式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  deepCopySticker?.generateDefaultValues() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  //当前分段的速度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  var tempSpeed:Float = 1.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  if model == .createStickersModelSpeed{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      tempSpeed = (totalClipNum + clipindex) % 2 == 0 ? maxSpeed : minSpeed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  if(totalClipNum + 1 + clipindex < finallyStuckPoints.count){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      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]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      //处理最后一点视频素材不够卡点时长 e.g. 0.3 卡点时长0.5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      if(tempOut > realUsedMusicDuration){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          BFLog(message: "最后一点视频素材不够卡点时长 ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          //最后一点素材时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          let lastAssetDuration = realUsedMusicDuration - tempOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          let pointDuration = timelineOut -  tempTimelineIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          let needSpeed = lastAssetDuration / pointDuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          //当前卡点段为快速 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          if(tempSpeed >= 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                              if(needSpeed > 0.4 * Double(tempSpeed)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                  deepCopySticker?.speedRate = tempSpeed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                              } else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                  continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          }else{//当前卡点段为慢速 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                              if(needSpeed > 0.4 * Double(tempSpeed) && needSpeed > 0.2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                  deepCopySticker?.speedRate = tempSpeed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                              } else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                  continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      deepCopySticker?.model_in = tempModel_In 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      deepCopySticker?.out = tempOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      deepCopySticker?.timelineIn = tempTimelineIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      deepCopySticker?.timelineOut = timelineOut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      lastOutTime =  deepCopySticker?.out ?? 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  BFLog(message: " 创建 sticker crilp is in \(String(format: "%.6f", deepCopySticker?.model_in ?? 0)) out  \(String(format: "%.6f", deepCopySticker?.out ?? 0)) ,分段素材时长:\(String(format: "%.6f", (deepCopySticker?.out ?? 0) - (deepCopySticker?.model_in ?? 0))) ,分段显示时长:\(String(format: "%.6f", (deepCopySticker?.timelineOut ?? 0) - (deepCopySticker?.timelineIn ?? 0))), 总时长\(CMTimeGetSeconds(asset.duration)) timelineIN: \(String(format: "%.6f", deepCopySticker?.timelineIn ?? 0)) timelineOUT:\(String(format: "%.6f", deepCopySticker?.timelineOut ?? 0)) speedRate:\(deepCopySticker?.speedRate ?? 0.0)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  if deepCopySticker != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      stickers.append(deepCopySticker!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              totalClipNum = totalClipNum + oneVideoClipNum - 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          } else if sticker.type == StickerType.IMAGE.rawValue { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      if(totalClipNum + 1 >= finallyStuckPoints.count){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          BFLog(message: "数据出现错误!!!查正") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                          break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      sticker.generateDefaultValues() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      sticker.timelineIn = Float64(finallyStuckPoints[totalClipNum]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      sticker.timelineOut = Float64(finallyStuckPoints[totalClipNum + 1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      totalClipNum = totalClipNum + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                      stickers.append(sticker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1243,11 +1200,7 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         一,快慢速模式下取卡点 1 3 5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           快节奏为选中区域的所有点位,即0,1,2,3,4 5 6 7 8 9 10 …… 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           适中为每两个点位取一个,即0,3,6,9 12 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           慢节奏为每三个点位取一个,即0 5 10 15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         一,快慢速模式下取卡点 2 3 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          二,跳跃卡点模式下根据不同速度 取卡点 1,2,3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            快节奏为选中区域的所有点位,即0,1,2,3,4 5 6 7 8 9 10 …… 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            适中为每两个点位取一个,即0,2,4,6…… 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1278,14 +1231,6 @@ extension PQStuckPointEditerController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         stuckPoints.insert(Float(stuckPointMusicData?.startTime ?? 0), at: 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        if stuckPoints.last != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            stuckPoints.removeLast() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 开始时间是服务器返回, 结果时间根据策略计算的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        stuckPoints.insert(Float(stuckPointMusicData?.startTime ?? 0), at: 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//        stuckPoints.insert(Float(stuckPointMusicData?.endTime ?? 0), at: stuckPoints.count) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for point in stuckPoints { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BFLog(message: "有 start end 计算后的卡点数\(point)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 |