Как управлять AVPlayer в SwiftUI? - PullRequest
0 голосов

В моем новом проекте SwiftUI у меня есть AVPlayer для потоковой передачи музыки с URL. Теперь мне нужно контролировать текущее время воспроизведения трека и громкость с помощью ползунков, вот часть дизайна:

enter image description here

теперь я могу контролироватьигрок с финальным классом UserData и его @Published vars, например isPlaying :

final class UserData: ObservableObject {
    // ...
    @Published var player: AVPlayer? = nil
    @Published var isPlaying: Bool = false
    //...

    func playPausePlayer(withSong song: Song, forPlaylist playlist: [Song]?) {
        //...
        if isPlaying {
            player?.pause()
        } else {
            player?.play()
        }

        isPlaying.toggle()
    }

}

рад знать, есть ли лучшее решение для этой части ?

Проблема в том,что свойства currentTime , duration Я могу взять только от player или player?.currentItem, поэтому я не могу сделать слайдер следующим образом:

@EnvironmentObject var userData: UserData
// ...
Slider(value: userData.player?.currentItem?.currentTime()!, in: 0...userData.player?.currentItem?.duration as! Double, step: 1)

Какя могу контролировать эти вещи?

...