MPMusicPlayerController systemMusicPlayer play skipToNextItem slow with a delay

I use the MPMusicPlayerControllerMusicPlayer system to play, but after skipping songs I notice a significant lag.

Here is my “lag” that I measured, at times it's faster:

  • 1.280796
  • 1.210124
  • 1.019931
  • 1.167739

After skipping several songs, the delay before the sound increases quite a bit.


-(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]);
}
+1
source share
1 answer

This seems to work for me:

    MPMediaQuery *mediaQuery = [MPMediaQuery songsQuery];

   // filter out cloud items, cloud items cause delays
   [mediaQuery addFilterPredicate:[MPMediaPropertyPredicate
                                predicateWithValue:@NO
                                       forProperty:MPMediaItemPropertyIsCloudItem]];
0
source

All Articles