Преглед изворни кода

fix:修复未加载成功就返回时的闪退问题

huzhiqiang пре 3 година
родитељ
комит
d960e84a04

+ 10 - 10
BFFramework/Classes/PQGPUImage/akfilters/PQMovieFilter.swift

@@ -99,7 +99,7 @@ class PQMovieFilter: PQBaseFilter {
 
     var currentThread: Thread?
     /// Use serial queue to ensure that the picture is smooth
-    var seekQueue: DispatchQueue!
+//    var seekQueue: DispatchQueue!
 
     // 原视频素材的 FPS
     var stickerFPS: Float = 0
@@ -162,15 +162,15 @@ class PQMovieFilter: PQBaseFilter {
         FilterLog(message: " move FILTER 初始化 开始显示时间:\(movieSticker.timelineIn) 结束显示时间:\(movieSticker.timelineOut)  裁剪开始时间:\(movieSticker.model_in)  裁剪结束时间:\(movieSticker.out)  路径:\(String(describing: movieSticker.locationPath)) 时长 \(CMTimeGetSeconds(asset?.duration ?? .zero))")
 
         startReading()
-
-        if #available(iOS 10.0, *) {
-            seekQueue = DispatchQueue(label: "PQ.moveFiler.seeking", qos: .default, attributes: .initiallyInactive, autoreleaseFrequency: .never, target: nil)
-        } else {
-            seekQueue = DispatchQueue(label: "PQ.moveFiler.seeking", qos: .userInteractive, attributes: [], autoreleaseFrequency: .inherit, target: nil)
-        }
-        if #available(iOS 10.0, *) {
-            seekQueue.activate()
-        }
+//
+//        if #available(iOS 10.0, *) {
+//            seekQueue = DispatchQueue(label: "PQ.moveFiler.seeking", qos: .default, attributes: .initiallyInactive, autoreleaseFrequency: .never, target: nil)
+//        } else {
+//            seekQueue = DispatchQueue(label: "PQ.moveFiler.seeking", qos: .userInteractive, attributes: [], autoreleaseFrequency: .inherit, target: nil)
+//        }
+//        if #available(iOS 10.0, *) {
+//            seekQueue.activate()
+//        }
     }
 
     public override func newFramebufferAvailable(_ framebuffer: Framebuffer, fromSourceIndex: UInt) {

+ 4 - 48
BFFramework/Classes/PQGPUImage/akfilters/PQMovieInput.swift

@@ -127,7 +127,7 @@ public class PQMovieInput: ImageSource {
     public  var mAutoPause: Bool = false
 
     /// Use serial queue to ensure that the picture is smooth
-    public  var seekQueue: DispatchQueue!
+//    public  var seekQueue: DispatchQueue!
 
     // 是否为导出模式
     public   var mIsExport: Bool = false
@@ -170,10 +170,10 @@ public class PQMovieInput: ImageSource {
 
         if #available(iOS 10, *){
             displayLink?.preferredFramesPerSecond = 30
-            seekQueue = DispatchQueue(label: "PQ.MovieInput.seeking", qos: .userInteractive, attributes: .initiallyInactive, autoreleaseFrequency: .never, target: nil)
+//            seekQueue = DispatchQueue(label: "PQ.MovieInput.seeking", qos: .userInteractive, attributes: .initiallyInactive, autoreleaseFrequency: .never, target: nil)
         }else{
             displayLink?.frameInterval = 2
-            seekQueue = DispatchQueue(label: "PQ.MovieInput.seeking", qos: .userInteractive, attributes: [], autoreleaseFrequency: .inherit, target: nil)
+//            seekQueue = DispatchQueue(label: "PQ.MovieInput.seeking", qos: .userInteractive, attributes: [], autoreleaseFrequency: .inherit, target: nil)
         }
         // 加入循环 要使用 common 不要让级别高的卡住回调事件
         displayLink?.add(to: RunLoop.main, forMode: RunLoop.Mode.common)
@@ -201,6 +201,7 @@ public class PQMovieInput: ImageSource {
         self.audioInputStatusObserver?.invalidate()
         self.avPlayerTimeObserver?.invalidate()
         
+        BFLog(message: "movieinput 销毁")
     }
 
     // MARK: -
@@ -293,11 +294,6 @@ public class PQMovieInput: ImageSource {
             }
             
           
-        }
-//        }
-
-        if #available(iOS 10.0, *) {
-            seekQueue.activate()
         }
     }
 
@@ -737,45 +733,5 @@ extension PQMovieInput {
         playerItem?.seek(to: playerItem?.reversePlaybackEndTime ?? CMTime(value: 0, timescale: 40))
     }
     
-    
-//    func playMusic(assetUrl:URL, ranges:[CMTimeRange]){
-//        if aplayer != nil {
-//            var indexRange = 0
-//            var range = ranges.first
-//            aplayer?.currentTime = CMTimeGetSeconds(range!.start)
-//            aplayer?.play()
-//            HHZPrint("声道数:\(aplayer?.numberOfChannels)")
-//            return
-//
-////                audioPlayerObserver?.invalidate()
-//            audioPlayerObserver = aplayer!.observe(\.deviceCurrentTime, options: [.new], changeHandler: { player, change in
-//                let currt = change.newValue ?? 0
-//                let end = CMTimeGetSeconds(range?.end ?? CMTime(value: 1, timescale: 100))
-//                HHZPrint("curr:\(currt), end:\(end), dur:\(player.duration)")
-//                if currt >= end || currt == player.duration {
-//                    player.pause()
-//                    indexRange += 1
-//                    if indexRange < ranges.count{
-//                        range = ranges[indexRange]
-//                        player.currentTime = CMTimeGetSeconds(range!.start)
-//                        player.play()
-//                    }
-//                }
-//            })
-//            let timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { [weak self] timer in
-//                HHZPrint("\(self?.aplayer?.currentTime)")
-//            }
-//            RunLoop.current.add(timer, forMode: .common)
-//
-//        }
-////        let queue = DispatchQueue.init(label: "playMusic")
-////
-////        queue.async {
-////
-////        }
-//
-//    }
-    
-    
 }
 

+ 3 - 3
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

@@ -468,7 +468,7 @@ class PQStuckPointEditerController: PQBaseViewController {
 
     override func backBtnClick() {
         super.backBtnClick()
-        playerView.pause()
+//        playerView.pause()
         // 点击上报:返回按钮
         PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_previewSyncedUp, extParams: nil, remindmsg: "卡点视频数据上报-(点击上报:返回按钮)")
     }
@@ -1000,13 +1000,13 @@ class PQStuckPointEditerController: PQBaseViewController {
     }
 
     deinit {
-        BFLog(message: "卡点视频预览界面销毁")
         musicNameLab.stop()
-        playerView.pause()
+//        playerView.pause()
         // 取消所有的导出
         PQSingletoMemoryUtil.shared.allExportSession.forEach { _, exportSession in
             exportSession.cancelExport()
         }
+        BFLog(message: "卡点视频预览界面销毁")
     }
 }