gpt4 book ai didi

ios - MPMusicPlayerController 继续播放后跳至下一首歌曲

转载 作者:行者123 更新时间:2023-11-29 05:27:10 28 4
gpt4 key购买 nike

我正在使用 MPMusicPlayerController 播放 Apple Music 中的歌曲。我定期(每隔几秒)使用更改歌曲队列

setQueue(带有:MPMusicPlayerStoreQueueDescriptor(storeIDs:ids))

我在音乐播放过程中没有任何问题,歌曲队列已按要求更新,我可以跳到下一首歌曲,一切都很好。但是,每当我在歌曲中间暂停播放器时,稍等一下,直到设置新队列,然后再次播放 - 当前歌曲丢失,下一首歌曲开始播放!

想象一下以下情况:

  1. 我有歌曲A、B、C、D
  2. 我将其设置为歌曲队列并调用 play()
  3. player.nowPlayingItem 返回 A
  4. 我在播放时将歌曲队列设置为 E、F、G、H
  5. 我调用 player.skipToNext() - 歌曲 E 按预期开始播放
  6. 我调用 player.pause() - 歌曲 E 暂停
  7. 我调用 player.play() - 歌曲 E 继续播放。 到目前为止一切都很好
  8. 我再次调用 player.pause() - 歌曲 E 暂停
  9. 我将歌曲队列设置为 I、J、K、L
  10. 我调用 player.play() - 我希望暂停的歌曲 E 继续播放。相反,歌曲I开始播放

我还针对上述场景做了一些日志输出:

func togglePlayPause() {
if player.playbackState == .playing {
player.pause()
} else {
NSLog("NP before \(player.nowPlayingItem)") // prints E at step 10
player.play()
NSLog("NP after \(player.nowPlayingItem)") // prints nil at step 10
}
}

奇怪的是,即使我更改了中间的队列,从锁定屏幕暂停/播放也可以正常工作。

有没有人遇到过类似的问题,有什么提示/解决方法可以解决这个问题吗?

最佳答案

作为解决方法,我使用了

player.currentPlaybackRate = 1

而不是player.play()。似乎 play() 所做的不仅仅是从暂停位置播放。

关于ios - MPMusicPlayerController 继续播放后跳至下一首歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58051335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com