diff --git a/Model/Player/Backends/MPVBackend.swift b/Model/Player/Backends/MPVBackend.swift index 02928d24..040485cb 100644 --- a/Model/Player/Backends/MPVBackend.swift +++ b/Model/Player/Backends/MPVBackend.swift @@ -239,7 +239,7 @@ final class MPVBackend: PlayerBackend { startPlaying() } - self.client.loadFile(url, sub: captions?.url, time: time) { [weak self] _ in + self.client.loadFile(url, sub: captions?.url, time: time, forceSeekable: stream.kind == .hls) { [weak self] _ in self?.isLoadingVideo = true } } else { @@ -251,7 +251,7 @@ final class MPVBackend: PlayerBackend { let fileToLoad = self.model.musicMode ? stream.audioAsset.url : stream.videoAsset.url let audioTrack = self.model.musicMode ? nil : stream.audioAsset.url - self.client?.loadFile(fileToLoad, audio: audioTrack, sub: captions?.url, time: time) { [weak self] _ in + self.client?.loadFile(fileToLoad, audio: audioTrack, sub: captions?.url, time: time, forceSeekable: stream.kind == .hls) { [weak self] _ in self?.isLoadingVideo = true self?.pause() } diff --git a/Model/Player/Backends/MPVClient.swift b/Model/Player/Backends/MPVClient.swift index 1c75fd98..b26d7a6f 100644 --- a/Model/Player/Backends/MPVClient.swift +++ b/Model/Player/Backends/MPVClient.swift @@ -123,7 +123,14 @@ final class MPVClient: ObservableObject { } } - func loadFile(_ url: URL, audio: URL? = nil, sub: URL? = nil, time: CMTime? = nil, completionHandler: ((Int32) -> Void)? = nil) { + func loadFile( + _ url: URL, + audio: URL? = nil, + sub: URL? = nil, + time: CMTime? = nil, + forceSeekable: Bool = false, + completionHandler: ((Int32) -> Void)? = nil + ) { var args = [url.absoluteString] var options = [String]() @@ -140,7 +147,9 @@ final class MPVClient: ObservableObject { options.append("sub-files-append=\"\(subURL)\"") } - options.append("force-seekable=yes") + if forceSeekable { + options.append("force-seekable=yes") + } if !options.isEmpty { args.append(options.joined(separator: ","))