我想开始,暂停和停止(与重启相同)我的mp3文件,我正在使用AVPlayer。我从服务器获取文件。
启动歌曲我做:
[self.player start];
暂停我这样做:
[self.player pause];
但是当我想要停止歌曲并重新加载时,以便当用户下次点击“开始按钮”时歌曲从头开始,我不知道该怎么办...
我试过这样的事情:[self.player pause];
self.player = nil;
但是当然播放器是零,我无法重新启动文件,无法进行新的初始化....任何想法如何阻止它?
答案 0 :(得分:5)
在Swift中执行此操作的最佳解决方案< 4:
player.seek(to: kCMTimeZero)
player.play()
Swift> = 4:
player.seek(to: .zero)
player.play()
答案 1 :(得分:2)
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)
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"