停止 AVPlayer 并重新启动 MP3 文件
Posted
技术标签:
【中文标题】停止 AVPlayer 并重新启动 MP3 文件【英文标题】:Stop AVPlayer and restart MP3 file again 【发布时间】:2014-09-16 13:49:30 【问题描述】:我想启动、暂停和停止(与重新启动相同)我的 mp3 文件,我正在使用 AVPlayer。我从服务器获取文件。
要开始我做的这首歌:
[self.player start];
暂停一下:
[self.player pause];
但是当我想停止歌曲并重新加载它,以便用户下次点击“开始按钮”时歌曲从头开始,我不知道该怎么做。
我尝试过这样的事情:
[self.player pause];
self.player = nil;
但是播放器当然是零,如果没有新的初始化,我无法再次重新启动文件。任何想法如何阻止它?
【问题讨论】:
[self.player seekToTime:CMTimeMakeWithSeconds(0, 5) completionHandler:nil] 从头开始播放。 完美,就像魅力一样,非常感谢! @Sandeep 第二个参数 (5) 是干什么用的? 【参考方案1】:使用[player pause]
停止视频
然后在开始播放视频时使用此代码。
[player seekToTime:kCMTimeZero];
[player play];
我比解决 OP 的评论更喜欢它 b/c 它消除了警告并使用了常量。
【讨论】:
【参考方案2】:在 Swift 中执行此操作的最佳解决方案
player.seek(to: kCMTimeZero)
player.play()
斯威夫特 >= 4:
player.seek(to: .zero)
player.play()
【讨论】:
【参考方案3】: 在 Xamarin.ios 中player.Seek(CoreMedia.CMTime.Zero);
播放器.Play();
【讨论】:
【参考方案4】:seek#to 有一个完成处理程序。
p?.seek(to: .zero)
p?.rate = 1
是不正确的。您可以获得音频抖动。
p?.seek(to: .zero) [weak self] _ in
self?.p?.rate = 1
可能是你想要的。
如果它已经在播放,而您只进行搜索而不进行其他操作,那么您可能会再次感到紧张。
你可能最好
p?.rate = 0
p?.seek(to: .zero) [weak self] _ in
self?.p?.rate = 1
如果它是一个非常重要的应用程序,您还必须考虑查找完成中的错误情况。
【讨论】:
【参考方案5】:在 Swift 4 中:self.player.seek(to: CMTime.zero)
【讨论】:
【参考方案6】:// If conti. play Video or audio apply this code
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd
:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[avPlayer currentItem]];
[avPlayer play];
- (void)playerItemDidReachEnd:(NSNotification *)notification
NSLog(@"Replay video in method");
AVPlayerItem *p = [notification object];
[p seekToTime:kCMTimeZero];
【讨论】:
因为代码格式不好,缺乏解释,这个答案没有帮助。以上是关于停止 AVPlayer 并重新启动 MP3 文件的主要内容,如果未能解决你的问题,请参考以下文章