diff --git a/JellyfinPlayer/Views/VideoPlayer/VLCPlayerViewController.swift b/JellyfinPlayer/Views/VideoPlayer/VLCPlayerViewController.swift index 880a9244..7a6e02a8 100644 --- a/JellyfinPlayer/Views/VideoPlayer/VLCPlayerViewController.swift +++ b/JellyfinPlayer/Views/VideoPlayer/VLCPlayerViewController.swift @@ -552,7 +552,6 @@ extension VLCPlayerViewController: PlayerOverlayDelegate { /// Do not call when setting to index -1 func didSelectSubtitleStream(index: Int) { - viewModel.subtitlesEnabled = true vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index) diff --git a/Shared/ViewModels/VideoPlayerViewModel.swift b/Shared/ViewModels/VideoPlayerViewModel.swift index cba905f3..1793ad39 100644 --- a/Shared/ViewModels/VideoPlayerViewModel.swift +++ b/Shared/ViewModels/VideoPlayerViewModel.swift @@ -471,9 +471,23 @@ extension VideoPlayerViewModel { } } -// MARK: Embedded SubtitleStreamViewModel +// MARK: Embedded/Normal Subtitle Streams extension VideoPlayerViewModel { - - + func createEmbeddedSubtitleStream(with subtitleStream: MediaStream) -> URL { + + guard let baseURL = URLComponents(url: streamURL, resolvingAgainstBaseURL: false) else { fatalError() } + guard let queryItems = baseURL.queryItems else { fatalError() } + + var newURL = baseURL + var newQueryItems = queryItems + + newQueryItems.removeAll(where: { $0.name == "SubtitleStreamIndex" }) + newQueryItems.removeAll(where: { $0.name == "SubtitleMethod" }) + + newURL.addQueryItem(name: "SubtitleMethod", value: "Encode") + newURL.addQueryItem(name: "SubtitleStreamIndex", value: "\(subtitleStream.index ?? -1)") + + return newURL.url! + } }