停止AVPlayer并再次重启mp3文件

时间:2014-09-16 13:49:30

标签: ios objective-c avplayer avplayeritem

我想开始,暂停和停止(与重启相同)我的mp3文件,我正在使用AVPlayer。我从服务器获取文件。

启动歌曲我做:

[self.player start];

暂停我这样做:

[self.player pause];

但是当我想要停止歌曲并重新加载时,以便当用户下次点击“开始按钮”时歌曲从头开始,我不知道该怎么办...

我试过这样的事情:

[self.player pause];
self.player = nil;

但是当然播放器是零,我无法重新启动文件,无法进行新的初始化....任何想法如何阻止它?

5 个答案:

答案 0 :(得分:5)

在Swift中执行此操作的最佳解决方案< 4:

player.seek(to: kCMTimeZero)
player.play()

Swift> = 4:

player.seek(to: .zero)
player.play()

答案 1 :(得分:2)

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
}

如果这是一个非常重要的应用,则还必须在搜索完成中考虑错误情况。

答案 2 :(得分:1)

  • 在Xamarin.ios

player.Seek(CoreMedia.CMTime.Zero);

player.Play();

答案 3 :(得分:0)

// 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];
  }

答案 4 :(得分:0)

在Swift 4中:output_list = np.concatenate((np.array(input_list),np.random.choice( input_list, size=output_size-input_list.__len__(), replace=True, p=[1/input_list.__len__()]*input_list.__len__() )),axis=None) np.random.shuffle(output_list) assert set(input_list).__len__()==set(output_list).__len__(),\ "Output list has fewer elements than input list"

相关问题