From 422880013ef52480986fe4038007b6cf21522971 Mon Sep 17 00:00:00 2001 From: Aiden Vigue Date: Wed, 26 May 2021 22:04:38 -0400 Subject: [PATCH] Seeking works - direct play complete. --- JellyfinPlayer/Views/VLCPlayer.swift | 27 ++++++++++- JellyfinPlayer/Views/VideoPlayer.storyboard | 50 ++++++++++----------- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/JellyfinPlayer/Views/VLCPlayer.swift b/JellyfinPlayer/Views/VLCPlayer.swift index b6800599..2897333e 100644 --- a/JellyfinPlayer/Views/VLCPlayer.swift +++ b/JellyfinPlayer/Views/VLCPlayer.swift @@ -75,15 +75,38 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe var playbackItem = PlaybackItem(); @IBAction func seekSliderStart(_ sender: Any) { - print("ss start") + sendProgressReport(eventName: "pause") mediaPlayer.pause() } @IBAction func seekSliderValueChanged(_ sender: Any) { - print("ss mv " + String(seekSlider.value)) + let videoDuration = Double(mediaPlayer.time.intValue + abs(mediaPlayer.remainingTime.intValue))/1000 + let secondsScrubbedTo = round(Double(seekSlider.value) * videoDuration); + let scrubRemaining = videoDuration - secondsScrubbedTo; + let remainingTime = scrubRemaining; + let hours = floor(remainingTime / 3600); + let minutes = (remainingTime.truncatingRemainder(dividingBy: 3600)) / 60; + let seconds = (remainingTime.truncatingRemainder(dividingBy: 3600)).truncatingRemainder(dividingBy: 60); + if(hours != 0) { + timeText.text = "\(Int(hours)):\(String(Int(floor(minutes))).leftPad(toWidth: 2, withString: "0")):\(String(Int(floor(seconds))).leftPad(toWidth: 2, withString: "0"))"; + } else { + timeText.text = "\(String(Int(floor(minutes))).leftPad(toWidth: 2, withString: "0")):\(String(Int(floor(seconds))).leftPad(toWidth: 2, withString: "0"))"; + } } + @IBAction func seekSliderEnd(_ sender: Any) { print("ss end") + let videoPosition = Double(mediaPlayer.time.intValue) + let videoDuration = Double(mediaPlayer.time.intValue + abs(mediaPlayer.remainingTime.intValue)) + //Scrub is value from 0..1 - find position in video and add / or remove. + let secondsScrubbedTo = round(Double(seekSlider.value) * videoDuration); + let offset = secondsScrubbedTo - videoPosition; mediaPlayer.play() + if(offset > 0) { + mediaPlayer.jumpForward(Int32(offset)/1000); + } else { + mediaPlayer.jumpBackward(Int32(abs(offset))/1000); + } + sendProgressReport(eventName: "unpause") } @IBAction func exitButtonPressed(_ sender: Any) { diff --git a/JellyfinPlayer/Views/VideoPlayer.storyboard b/JellyfinPlayer/Views/VideoPlayer.storyboard index 0e86e10f..7ba3f95c 100644 --- a/JellyfinPlayer/Views/VideoPlayer.storyboard +++ b/JellyfinPlayer/Views/VideoPlayer.storyboard @@ -32,20 +32,21 @@ - + + - @@ -99,17 +102,15 @@ - - + - - + @@ -149,8 +150,5 @@ - - -