diff --git a/Model/Player/Backends/MPVBackend.swift b/Model/Player/Backends/MPVBackend.swift
index e4359673..773251d8 100644
--- a/Model/Player/Backends/MPVBackend.swift
+++ b/Model/Player/Backends/MPVBackend.swift
@@ -605,6 +605,14 @@ final class MPVBackend: PlayerBackend {
                 isPlaying = !paused
                 networkStateTimer.start()
             }
+        case "core-idle":
+            if let idle = UnsafePointer<Bool>(OpaquePointer(property.data))?.pointee {
+                if !idle {
+                    isLoadingVideo = false
+                    isSeeking = false
+                    networkStateTimer.start()
+                }
+            }
         default:
             logger.info("MPV backend received unhandled property: \(name)")
         }
diff --git a/Model/Player/Backends/MPVClient.swift b/Model/Player/Backends/MPVClient.swift
index 138fa052..9b51f54a 100644
--- a/Model/Player/Backends/MPVClient.swift
+++ b/Model/Player/Backends/MPVClient.swift
@@ -109,6 +109,7 @@ final class MPVClient: ObservableObject {
 
         mpv_set_wakeup_callback(mpv, wakeUp, UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque()))
         mpv_observe_property(mpv, 0, "pause", MPV_FORMAT_FLAG)
+        mpv_observe_property(mpv, 0, "core-idle", MPV_FORMAT_FLAG)
     }
 
     func readEvents() {