AVPlayer replaceCurrentItemWithPlayerItem not working on iOS 4.3.3+

前端 未结 2 1824
予麋鹿
予麋鹿 2021-02-19 04:35

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

相关标签:
2条回答
  • 2021-02-19 05:03

    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.

    0 讨论(0)
  • 2021-02-19 05:07

    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 AVPlayerItems 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

    0 讨论(0)
提交回复
热议问题