Selaa lähdekoodia

1,不使用 JSON 创建对象 2, 6x 速 定帧问题

jsonwang 3 vuotta sitten
vanhempi
commit
482542bf46

+ 12 - 11
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

@@ -1035,9 +1035,8 @@ extension PQStuckPointEditerController {
                 BFLog(message: "单个视频\(sticker.locationPath)时长::\(CMTimeGetSeconds(asset.duration)) ,clipNum is:\(clipNum)")
                 for clipindex in 0 ... clipNum - 1 {
                     // deep copy sticker model 防止只有一个对象
-                    let stickerjson = sticker.toJSONString(prettyPrint: false)
-                    let deepCopySticker = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: stickerjson!)
-
+                    let deepCopySticker:PQEditVisionTrackMaterialsModel? = sticker.copy() as? PQEditVisionTrackMaterialsModel
+                              
                     // 设置循环模式和适配模式
                     deepCopySticker?.generateDefaultValues()
 
@@ -1083,9 +1082,9 @@ extension PQStuckPointEditerController {
                     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!)
+//
+                        let deepCopySticker:PQEditVisionTrackMaterialsModel? = sticker.copy() as? PQEditVisionTrackMaterialsModel
+                        
                         if deepCopySticker!.type == StickerType.IMAGE.rawValue {
                             if index + 1 < finallyStuckPoints.count {
                                 deepCopySticker!.timelineIn = Float64("\(finallyStuckPoints[index])") ?? 0.0
@@ -1150,10 +1149,8 @@ extension PQStuckPointEditerController {
                                 for clipindex in 0 ... sticker.clipCount {
                                     // deep copy sticker model 防止只有一个对象
                                     let deepCopyStickerDecoderTime: TimeInterval = Date().timeIntervalSince1970
-
-                                    let stickerjson = sticker.toJSONString(prettyPrint: false)
-
-                                    let deepCopySticker = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: stickerjson!)
+                                    
+                                    let deepCopySticker:PQEditVisionTrackMaterialsModel? = sticker.copy() as? PQEditVisionTrackMaterialsModel
 
                                     BFLog(message: "生成stickers 总时长为 aaa\(Date().timeIntervalSince1970 - deepCopyStickerDecoderTime)")
                                     // 设置循环模式和适配模式
@@ -1419,8 +1416,9 @@ extension PQStuckPointEditerController {
                                 let LA = tempMaxSpeed * (stuckPointsTemp[i + 1] - stuckPointsTemp[i])
                                 let LAValue =  String(format: "%.6f", tempMaxSpeed * (stuckPointsTemp[i + 1] - stuckPointsTemp[i]))
                                 useAssestDurationTemp = useAssestDurationTemp + (Float(LAValue) ?? 0.0)
+                                //6x 第一个卡点X 倍速 > 原素材
                                 if useAssestDurationTemp > Float(assetDuration) {
-                                    useAssestDurationTemp = useAssestDurationTemp - (Float(LAValue) ?? 0.0)
+                                    useAssestDurationTemp = Float(assetDuration)
                                     break
                                 }
                                 LACount = LACount + 1
@@ -1487,6 +1485,9 @@ extension PQStuckPointEditerController {
                                         }
                                     }
                                 }
+                            }else {
+                                //出现在第一个卡点X 倍速 > 原素材
+                                finallyStuckPoints.removeLast()
                             }
                         }
                     }

+ 36 - 22
BFFramework/Classes/Stuckpoint/ViewModel/PQGPUImagePlayerView.swift

@@ -579,34 +579,48 @@ public class PQGPUImagePlayerView: UIView {
             movie!.removeAllTargets()
         
             if(showFilter.stickerInfo?.type == StickerType.IMAGE.rawValue && showGaussianBlur){
-              
-                self.createFiltersQueue.async {
-                    //高斯层
-                    let json = showFilter.stickerInfo?.toJSONString(prettyPrint: false)
-                    if json == nil {
-                        FilterLog(message: "数据转换有问题 跳转")
-                        return
-                    }
-
-                    let blurStickerModel: PQEditVisionTrackMaterialsModel? = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: json!)
-                    blurStickerModel?.canvasFillType = stickerContentMode.aspectFillStr.rawValue
-                    let showGaussianFitler:PQBaseFilter = PQImageFilter(sticker: blurStickerModel!)
-                    
-                    let iosb:GaussianBlur = GaussianBlur.init()
-                    iosb.blurRadiusInPixels = 20
-                    showGaussianFitler.addTarget(iosb)
-                    
+         
+//                    //高斯层
+//                    let json = showFilter.stickerInfo?.toJSONString(prettyPrint: false)
+//                    if json == nil {
+//                        FilterLog(message: "数据转换有问题 跳转")
+//                        return
+//                    }
+//
+//                    var blurStickerModel: PQEditVisionTrackMaterialsModel? = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: json!)
+//                    blurStickerModel?.canvasFillType = stickerContentMode.aspectFillStr.rawValue
+      
                     sharedImageProcessingContext.runOperationAsynchronously{ [self] in
-        
+    
+//                        let json = showFilter.stickerInfo?.toJSONString(prettyPrint: false)
+//                        if json == nil {
+//                            FilterLog(message: "数据转换有问题 跳转")
+//                            return
+//                        }
+
+//                        let blurStickerModel: PQEditVisionTrackMaterialsModel? = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: json!)
+//                        blurStickerModel?.canvasFillType = stickerContentMode.aspectFillStr.rawValue
+//                        let showGaussianFitler:PQBaseFilter = PQImageFilter(sticker: blurStickerModel!)
+                        
+                        let  blurStickerModel:PQEditVisionTrackMaterialsModel? = showFilter.stickerInfo?.copy() as? PQEditVisionTrackMaterialsModel
+                        blurStickerModel?.canvasFillType = stickerContentMode.aspectFillStr.rawValue
+
+                        if blurStickerModel == nil {
+                            return
+                        }
+                        let showGaussianFitler:PQBaseFilter = PQImageFilter(sticker: blurStickerModel!)
+                        
+                        
+                        let iosb:GaussianBlur = GaussianBlur.init()
+                        iosb.blurRadiusInPixels = 20
+                        showGaussianFitler.addTarget(iosb)
+                        
                         self.movie?.addTarget(showGaussianFitler, atTargetIndex: 0)
                         iosb.addTarget(showFilter)
                         showFilter.addTarget(self.renderView as ImageConsumer, atTargetIndex: 0)
                         
                     }
-                }
-            
-           
-                
+ 
             }else{
                 movie?.addTarget(showFilter, atTargetIndex: 0)
                 showFilter.addTarget(renderView, atTargetIndex: 0)