Browse Source

处理合成播放器主线程释放超时导致watchdog崩溃

Steven 8 months ago
parent
commit
6b854af318

+ 3 - 1
KulexiuForStudent/KulexiuForStudent/Common/MediaMerge/AudioMerge/KSMediaMergeView.m

@@ -886,7 +886,9 @@
 
 - (void)freePlayer {
     if (_mergePlayer) {
-        [self.mergePlayer freePlayer];
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            [self.mergePlayer freePlayer];
+        });
     }
     if (_videoView) {
         [self.videoView freePlayer];

+ 6 - 6
KulexiuForStudent/KulexiuForStudent/Common/MediaMerge/AudioMerge/MergePlayer/KSMergeEnginePlayer.m

@@ -458,12 +458,7 @@
 
 - (void)freePlayer {
     [self stopPlay];
-    [self.audioEngine stop];
-    // 停止并清理定时器
-    if (_timer) {
-        [_timer invalidate];
-        _timer = nil;
-    }
+    [self.audioEngine.mainMixerNode removeTapOnBus:0];
 }
 
 - (void)startTimer {
@@ -571,6 +566,11 @@
 
 - (void)dealloc {
     NSLog(@"---- KSMergeEnginePlayer dealloc");
+    // 停止并清理定时器
+    if (_timer) {
+        [_timer invalidate];
+        _timer = nil;
+    }
     [[NSNotificationCenter defaultCenter] removeObserver:self];
 }