多个AVPlayers躲闪?

时间:2015-08-25 04:47:06

标签: ios avplayer avaudiosession

我有一个相对简单的设置,涉及1个AVPlayer在背景中循环一些环境音频,第二个播放器在某些点播放较短的声音。

我观察到的是,当播放短音时,我听到环境剪辑被切断了大约一秒钟,同时有一个staticy pop。然后它继续播放,同时播放短音。这只发生在设备上 - 它在SIM卡上并不明显,这似乎表明存在潜在的性能问题。

我无法弄清楚为什么第一个AVPlayer有这个blip。以下是环境播放器的代码:

NSString *path = [[NSBundle mainBundle] pathForResource:kAmbientTrack ofType:@"mp3"];
_ambientPlayer = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
[self.ambientPlayer play];

稍微复杂一点,因为我在收听时也会收听通知并重新启动,但是在发生任何循环之前,即使在初始播放期间也会出现此问题。

因此,虽然这是在后台进行的,但我还是会播放另一个片段:

  self.announcementPlayer = [[AVPlayer alloc] initWithURL:[myObject audioPathUrl]];
  [self.announcementPlayer play];

所以没有什么特别的 - 只有两个AVPlayers在玩。

唯一感兴趣的是我在应用启动时如何设置音频会话。

  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];

我这样做是为了让用户在后台播放其他应用中的音乐。

我认为我的代码很直接,而且我真的不知道为什么我会得到这个昙花一现。

我通过将音频播放器更改为AVAudioPlayers来解决这个问题。在大多数情况下,这解决了爆裂问题。但是,我仍然躲避。具体来说,如果我播放AVAudioPlayer,并且在播放时,我开始加载AVPlayer,它会将AVAudioPlayer切断大约一秒钟。这就是我所说的:

  [myAVAudioPlayer play];
  AVPlayer *player = [AVPlayer playerWithURL:[self.currentExercise videoPathUrl]];

第二行的添加导致myAVAudioPlayer的第一秒左右静音。

0 个答案:

没有答案