MPMusicPlayerController systemMusicPlayer播放skipToNextItem速度慢,滞后

我使用MPMusicPlayerController systemMusicPlayer播放音乐,但跳过歌曲后,我注意到显着的滞后。

这是我测量的“滞后”,有时更快:

  • 1.280796
  • 1.210124
  • 1.019931
  • 1.167739

在跳过几首歌之后,听到声音之前的延迟时间增加了很多。


-(void)viewDidLoad { [[MPMusicPlayerController systemMusicPlayer] setQueueWithQuery:[MPMediaQuery songsQuery]]; [[MPMusicPlayerController systemMusicPlayer] prepareToPlay]; NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver:self selector:@selector(handlePlaybackStateChanged:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:nil]; [notificationCenter addObserver:self selector:@selector(handleNowPlayingItemChanged:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:[MPMusicPlayerController systemMusicPlayer]]; [[MPMusicPlayerController systemMusicPlayer] beginGeneratingPlaybackNotifications]; } 

 -(IBAction)playBtn:(id)sender { if ([MPMusicPlayerController systemMusicPlayer].playbackState != MPMusicPlaybackStatePlaying) { [[MPMusicPlayerController systemMusicPlayer] play]; } else { [[MPMusicPlayerController systemMusicPlayer] pause]; } } -(void)skipTrack { startTrackChange = [NSDate date]; [[MPMusicPlayerController systemMusicPlayer] skipToNextItem]; } -(void)handleNowPlayingItemChanged:(id)notification { NSLog(@"%f",[startTrackChange timeIntervalSinceNow]); } 

这似乎为我工作:

  MPMediaQuery *mediaQuery = [MPMediaQuery songsQuery]; // filter out cloud items, cloud items cause delays [mediaQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:@NO forProperty:MPMediaItemPropertyIsCloudItem]];