From 4e5a810047cd1e7e5c6095e75cdcfc4a32b4cac0 Mon Sep 17 00:00:00 2001 From: Aiden Vigue Date: Thu, 27 May 2021 10:49:17 -0400 Subject: [PATCH] Fix playback --- JellyfinPlayer/Views/VideoPlayer.swift | 35 ++++++++++++-------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/JellyfinPlayer/Views/VideoPlayer.swift b/JellyfinPlayer/Views/VideoPlayer.swift index 79f4b189..296c86bf 100644 --- a/JellyfinPlayer/Views/VideoPlayer.swift +++ b/JellyfinPlayer/Views/VideoPlayer.swift @@ -158,12 +158,21 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe //View has loaded. //Show loading screen - usleep(10000); delegate?.showLoadingView(self) mediaPlayer.perform(Selector(("setTextRendererFontSize:")), with: 14) //mediaPlayer.wrappedValue.perform(Selector(("setTextRendererFont:")), with: "Copperplate") + + mediaPlayer.delegate = self + mediaPlayer.drawable = videoContentView + + if(manifest.Type == "Episode") { + titleLabel.text = "\(manifest.Name) - S\(String(manifest.ParentIndexNumber ?? 0)):E\(String(manifest.IndexNumber ?? 0)) - \(manifest.SeriesName ?? "")" + } else { + titleLabel.text = manifest.Name + } + //Fetch max bitrate from UserDefaults depending on current connection mode let defaults = UserDefaults.standard let maxBitrate = globalData.isInNetwork ? defaults.integer(forKey: "InNetworkBandwidth") : defaults.integer(forKey: "OutOfNetworkBandwidth") @@ -258,8 +267,9 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe sendPlayReport() playbackItem = item; } - mediaPlayer.stop() + DispatchQueue.global(qos: .background).async { + mediaPlayer.media = VLCMedia(url: playbackItem.videoUrl) mediaPlayer.play() subtitleTrackArray.forEach() { sub in if(sub.id != -1 && sub.delivery == "External" && sub.codec != "subrip") { @@ -267,13 +277,11 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe mediaPlayer.addPlaybackSlave(sub.url, type: .subtitle, enforce: false) } } + mediaPlayer.pause() + delegate?.showLoadingView(self) sleep(3) mediaPlayer.pause() - usleep(10000); - mediaPlayer.play() mediaPlayer.currentVideoSubTitleIndex = selectedCaptionTrack; - mediaPlayer.pause() - usleep(10000); mediaPlayer.play() mediaPlayer.jumpForward(Int32(manifest.Progress/10000000)) } @@ -286,15 +294,6 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe break } } - - mediaPlayer.delegate = self - mediaPlayer.drawable = videoContentView - - if(manifest.Type == "Episode") { - titleLabel.text = "\(manifest.Name) - S\(String(manifest.ParentIndexNumber ?? 0)):E\(String(manifest.IndexNumber ?? 0)) - \(manifest.SeriesName ?? "")" - } else { - titleLabel.text = manifest.Name - } } override func viewWillAppear(_ animated: Bool) { @@ -308,11 +307,9 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe let currentState: VLCMediaPlayerState = mediaPlayer.state switch currentState { case .stopped : - print("Video is done playing)") - sendStopReport() + break; case .ended : - print("Video is done playing)") - sendStopReport() + break; case .playing : print("Video is playing") sendProgressReport(eventName: "unpause")