Prechádzať zdrojové kódy

音画同步,合成时使用原有逻辑

huzhiqiang 3 rokov pred
rodič
commit
3028022799

+ 16 - 7
BFFramework/Classes/PQGPUImage/akfilters/PQMovieInput.swift

@@ -222,18 +222,25 @@ public class PQMovieInput: ImageSource {
             displayLink.isPaused = true
             return
         }
-
-        if self.beginTime == 0 {
-            self.beginTime = CFAbsoluteTimeGetCurrent()
+        
+        // 预览模式
+        if !mIsExport {
+            if self.beginTime == 0 {
+                self.beginTime = CFAbsoluteTimeGetCurrent()
+            }
         }
+
  
         autoreleasepool {
       
             let duration = CMTimeGetSeconds(playeTimeRange.end)
             
-            self.currentTime = CMTimeMakeWithSeconds(self.beginTime +  CMTimeGetSeconds(startTime ?? CMTime.zero), preferredTimescale: BASE_FILTER_TIMESCALE)
-            self.currentTime = CMTimeMakeWithSeconds(CFAbsoluteTimeGetCurrent() - self.beginTime +  CMTimeGetSeconds(startTime ?? CMTime.zero), preferredTimescale: BASE_FILTER_TIMESCALE)
-//            self.beginTime = self.beginTime + 1 / 30
+            if !mIsExport {
+                self.currentTime = CMTimeMakeWithSeconds(CFAbsoluteTimeGetCurrent() - self.beginTime +  CMTimeGetSeconds(startTime ?? CMTime.zero), preferredTimescale: BASE_FILTER_TIMESCALE)
+            }else {
+                self.currentTime = CMTimeMakeWithSeconds(self.beginTime +  CMTimeGetSeconds(startTime ?? CMTime.zero), preferredTimescale: BASE_FILTER_TIMESCALE)
+                self.beginTime = self.beginTime + 1 / 30
+            }
             
             let currTime = CMTimeGetSeconds(self.currentTime)
   
@@ -378,7 +385,9 @@ public class PQMovieInput: ImageSource {
         FilterLog(message: "PQMoveInput恢复播放")
         mFreeBuffer = false
         isPlay = true
-        self.beginTime = CFAbsoluteTimeGetCurrent() - CMTimeGetSeconds(self.currentTime) + CMTimeGetSeconds(self.startTime ?? CMTime(value: 0, timescale: 1))
+        if !mIsExport{
+            self.beginTime = CFAbsoluteTimeGetCurrent() - CMTimeGetSeconds(self.currentTime) + CMTimeGetSeconds(self.startTime ?? CMTime(value: 0, timescale: 1))
+        }
 
         // 暂停帧的刷新 true:停 ; false:开始
         displayLink?.isPaused = false