fixed the playback speed remeber stuff

This commit is contained in:
cranci1 2025-02-09 09:06:55 +01:00
parent 76e1d8ddce
commit c7a35b11a5
3 changed files with 11 additions and 3 deletions

View file

@ -83,6 +83,7 @@ struct CustomMediaPlayer: View {
}
}
startUpdatingCurrentTime()
setInitialPlayerRate()
addPeriodicTimeObserver(fullURL: fullUrl)
}
.edgesIgnoringSafeArea(.all)
@ -229,6 +230,7 @@ struct CustomMediaPlayer: View {
startUpdatingCurrentTime()
}
.onDisappear {
UserDefaults.standard.set(player.rate, forKey: "lastPlaybackSpeed")
player.pause()
inactivityTimer?.invalidate()
if let timeObserverToken = timeObserverToken {
@ -265,6 +267,13 @@ struct CustomMediaPlayer: View {
}
}
private func setInitialPlayerRate() {
if UserDefaults.standard.bool(forKey: "rememberPlaySpeed") {
let lastPlayedSpeed = UserDefaults.standard.float(forKey: "lastPlaybackSpeed")
player.rate = lastPlayedSpeed > 0 ? lastPlayedSpeed : 1.0
}
}
private func addPeriodicTimeObserver(fullURL: String) {
let interval = CMTime(seconds: 1.0, preferredTimescale: CMTimeScale(NSEC_PER_SEC))
timeObserverToken = player.addPeriodicTimeObserver(forInterval: interval, queue: .main) { time in

View file

@ -75,7 +75,6 @@ class VideoPlayerViewController: UIViewController {
if let playbackSpeed = player?.rate {
UserDefaults.standard.set(playbackSpeed, forKey: "lastPlaybackSpeed")
}
player?.pause()
if let timeObserverToken = timeObserverToken {
player?.removeTimeObserver(timeObserverToken)

View file

@ -14,11 +14,11 @@ struct SettingsViewPlayer: View {
@AppStorage("rememberPlaySpeed") private var isRememberPlaySpeed = false
@AppStorage("holdSpeedPlayer") private var holdSpeedPlayer: Double = 2.0
private let mediaPlayers = ["Default", "VLC", "OutPlayer", "Infuse", "nPlayer", "Sora"]
private let mediaPlayers = ["Default", "Sora", "VLC", "OutPlayer", "Infuse", "nPlayer"]
var body: some View {
Form {
Section(header: Text("Media Player"), footer: Text("The Force Landscape and HoldSpeed only work inside the default iOS player and Sora player.")) {
Section(header: Text("Media Player"), footer: Text("Some features are limited to Sora while others are limited to the Default player, such as ForceLandscape and holdSpeed.")) {
HStack {
Text("Media Player")
Spacer()