I have an audio player that I\'m building using AVPlayer.
Currently, I keep the player
instance around and when I need to swap tracks (either from a manual
I've been experiencing similar problems. You probably got started from AVPlayerDemoPlaybackViewController from Apple sample code like me. Maybe the problem why currentItem
is nil
is because it's not loaded yet or ready for playback (my problem was I couldn't get the duration of the new AVPlayerItem
).
You could try starting the playback when observed status of the currentItem
is ReadyToPlay
.
AVPlayerStatus status = [[change objectForKey:NSKeyValueChangeNewKey] integerValue];
switch (status) {
case AVPlayerStatusUnknown: {
NSLog(@"PLAYER StatusUnknown");
}
break;
case AVPlayerStatusReadyToPlay: {
NSLog(@"PLAYER ReadyToPlay");
[self play];
}
break;
case AVPlayerStatusFailed: {
AVPlayerItem *playerItem = (AVPlayerItem *)object;
[self handleError: [playerItem.error localizedDescription]];
}
break;
}
I don't know if this will wok for you, I didn't try this on lower or higher than 4.3.4 iPad, so I guess I'll run into complications soon.
I had this issue with iOS 5 (including 5.0.1). It used to work fine on iOS 4.x.
There are two ways to workaround this, release and recreate your AVPlayer
with the desired AVPlayerItem
s each time you need to swap tracks. Or, simply call replaceCurrentItemWithPlayerItem:
on the main thread.
I tried both options and they worked fine.
Credits to: Apple Developer Forums