【问题标题】:How can I save the last paused time in an AVPlayer, and seek to it in another storyboard?如何保存 AVPlayer 中的最后暂停时间,并在另一个故事板中寻找它?
【发布时间】:2020-11-15 21:03:42
【问题描述】:

我是 xCode/swift 的新手,所以请原谅我的经验不足。我有一个 ViewController,我的观众可以在其中收听一些音频播放。当播放器单击播放按钮时,播放是这样访问的:

@IBAction func buttonClicked(_ sender: RoundButton)
{
    self.clickedButton = sender
    guard let url = sender.url else {
        return
    }

    let player = AVPlayer(url: url)
    
    let controller = AVPlayerViewController()
    controller.player = player
    
    present(controller, animated: true) {
        player.play()
    }

}

我从另一个 StackOverflow 问题中得到了这段代码,所以我没有完全理解它。我的目标是能够保存 URL 和上次播放时间,以便用户可以最小化应用程序,或导航到不同的屏幕,然后能够单击“继续收听”按钮,该按钮将拉出另一个 AVPlayer最后使用的 URL。这个“继续收听”的 AVPlayer 会寻找上次播放的时间。

我知道我需要以某种方式观察第一个 AVPlayer,以便当它暂停、停止或置于后台时,我将 currentTime 保存到 NSUserDefault(我认为?)。我还需要保存 URL,因为用户可以点击许多不同的 URL。

我试过这样做,除了无法弄清楚观察结果之外,我也无法弄清楚 NSUserDefault 存在的类型不一致。我尝试在设置后将 URL NSDefault 值检索为字符串,但是当我使用 URL(string: lastPlayedURL) 将字符串转换为 URL 时,xCode 抱怨“无法将类型数据转换为预期类型的​​字符串”。

我使用其他 StackOverflow 问题来解决我的问题是我不明白将代码块放在哪里。我在哪里创建观察者?因为当我在“buttonClicked”的主体内创建 xCode 时,它​​似乎并不开心。

谢谢你听我闲聊。

【问题讨论】:

    标签: ios swift xcode avplayer swift5


    【解决方案1】:

    是的,UserDefaults 似乎适合存储 URL。使用 this method 来执行此操作。

    要观察玩家,您需要使用AVPlayerItem。这是some code,表明了这一点。

    关于 Xcode(注意大写)和 Swift 语言的一般问题,恐怕这些是您需要通过阅读/观看教程/文档自己解决的问题。然后当你发现详细的问题时,在这里发布你的代码并询问。

    祝你好运,玩得开心!

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 2010-12-20
      • 2017-02-22
      • 1970-01-01
      相关资源
      最近更新 更多