mirror of
https://github.com/cranci1/Sora.git
synced 2026-05-05 01:39:05 +00:00
fix resuming logic to actually work
This commit is contained in:
parent
0361eb9aed
commit
3c80c65ca6
1 changed files with 21 additions and 11 deletions
|
|
@ -49,6 +49,7 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
||||||
var currentTimeVal: Double = 0.0
|
var currentTimeVal: Double = 0.0
|
||||||
var duration: Double = 0.0
|
var duration: Double = 0.0
|
||||||
var isVideoLoaded = false
|
var isVideoLoaded = false
|
||||||
|
private var hasSeekedToLastTime = false
|
||||||
|
|
||||||
private var isHoldPauseEnabled: Bool {
|
private var isHoldPauseEnabled: Bool {
|
||||||
UserDefaults.standard.bool(forKey: "holdForPauseEnabled")
|
UserDefaults.standard.bool(forKey: "holdForPauseEnabled")
|
||||||
|
|
@ -325,12 +326,6 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
||||||
playerItem.addObserver(self, forKeyPath: "status", options: [.new], context: &playerItemKVOContext)
|
playerItem.addObserver(self, forKeyPath: "status", options: [.new], context: &playerItemKVOContext)
|
||||||
|
|
||||||
Logger.shared.log("Created AVPlayerItem with status: \(playerItem.status.rawValue)", type: "Debug")
|
Logger.shared.log("Created AVPlayerItem with status: \(playerItem.status.rawValue)", type: "Debug")
|
||||||
|
|
||||||
let lastPlayedTime = UserDefaults.standard.double(forKey: "lastPlayedTime_\(fullUrl)")
|
|
||||||
if lastPlayedTime > 0 {
|
|
||||||
let seekTime = CMTime(seconds: lastPlayedTime, preferredTimescale: 1)
|
|
||||||
self.player.seek(to: seekTime)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
|
|
@ -658,6 +653,10 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
||||||
UserDefaults.standard.set(playbackSpeed, forKey: "lastPlaybackSpeed")
|
UserDefaults.standard.set(playbackSpeed, forKey: "lastPlaybackSpeed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save current playback time when leaving the player
|
||||||
|
UserDefaults.standard.set(self.currentTimeVal, forKey: "lastPlayedTime_\(self.fullUrl)")
|
||||||
|
UserDefaults.standard.set(self.duration, forKey: "totalTime_\(self.fullUrl)")
|
||||||
|
|
||||||
if let token = timeObserverToken {
|
if let token = timeObserverToken {
|
||||||
player.removeTimeObserver(token)
|
player.removeTimeObserver(token)
|
||||||
timeObserverToken = nil
|
timeObserverToken = nil
|
||||||
|
|
@ -762,6 +761,17 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
|
||||||
switch playerItem.status {
|
switch playerItem.status {
|
||||||
case .readyToPlay:
|
case .readyToPlay:
|
||||||
Logger.shared.log("AVPlayerItem status: Ready to play", type: "Debug")
|
Logger.shared.log("AVPlayerItem status: Ready to play", type: "Debug")
|
||||||
|
if !hasSeekedToLastTime {
|
||||||
|
let lastPlayedTime = UserDefaults.standard.double(forKey: "lastPlayedTime_\(fullUrl)")
|
||||||
|
if lastPlayedTime > 0 {
|
||||||
|
let seekTime = CMTime(seconds: lastPlayedTime, preferredTimescale: 600)
|
||||||
|
self.player.seek(to: seekTime) { [weak self] _ in
|
||||||
|
self?.hasSeekedToLastTime = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
hasSeekedToLastTime = true
|
||||||
|
}
|
||||||
|
}
|
||||||
case .failed:
|
case .failed:
|
||||||
if let error = playerItem.error {
|
if let error = playerItem.error {
|
||||||
Logger.shared.log("AVPlayerItem failed with error: \(error.localizedDescription)", type: "Error")
|
Logger.shared.log("AVPlayerItem failed with error: \(error.localizedDescription)", type: "Error")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue