gpt4 book ai didi

ios - avplayer 在 seekToTime 上完成歌曲

转载 作者:行者123 更新时间:2023-11-28 08:52:56 26 4
gpt4 key购买 nike

我试图让 avPlayer 在选择跳回按钮时重新启动当前歌曲,如果它是在进入歌曲大约 5 秒后,并根据 slider 移动到的位置跳转到时间。这是我为这些功能编写的代码:

@IBAction func buttonBackTouchDown(sender: AnyObject) {
if (Float(CMTimeGetSeconds((avPlayerItem?.currentTime())!)) > 5) {
//restartSong = true
avPlayer.currentItem!.seekToTime(kCMTimeZero)
//self.loadSongValues()
//restartSongTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("setRestartSongToFalse"), userInfo: nil, repeats: false)
}
else if (Float(CMTimeGetSeconds((avPlayerItem?.currentTime())!)) < 5) {
self.previousSong()
}
}


@IBAction func sliderTouchDown(sender: AnyObject) {
self.sliderTimer.invalidate()
avPlayer.pause()
self.overlayOn()
}


@IBAction func sliderTouchUpInside(sender: AnyObject) {
//restartSongTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("setRestartSongToFalse"), userInfo: nil, repeats: false)
//NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("startSliderTimer"), userInfo: nil, repeats: false)
self.startLabelTimer()
avPlayer.play()
self.updateNowPlayingInfoCenter()
self.overlayOff()
}

我遇到的问题是,如果歌曲播放时间超过 1 分钟,或者快要播放完毕,而我将 slider 向后移得太远,有时会触发此观察器:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "skipSong", name: AVPlayerItemDidPlayToEndTimeNotification, object: avPlayerItem)

我尝试查看 Apple 的引用资料并查看 StackOverflow 上的其他问题,但找不到任何内容。

也许我不明白如何正确使用 CMTime,或者文件有些奇怪,但这对我来说真的很奇怪。

感谢任何帮助。提前致谢!

最佳答案

我也遇到了很多关于 AVPlayer 的问题,尤其是 SeekToTime 方法。

当你这样做的时候

avPlayer.currentItem!.seekToTime(kCMTimeZero)

avPlayer 跳转到第 0 帧,而不是它应该跳到的第一个帧。对于 AVPlayer,第 0 帧和最后一帧似乎是相同的。尝试以下操作:(比如跳转到时间 0.001 而不是 0)

        let seekTime : CMTime = CMTimeMake(1, 1000)
avPlayer!.seekToTime(seekTime)

关于ios - avplayer 在 seekToTime 上完成歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744932/

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