了解AVPlayer是否正在加载或播放来自互联网的mp3

时间:2013-10-20 01:17:51

标签: ios avplayer

我想使用AVPlayer从互联网流式传输.mp3

[[AVPlayer alloc] initWithURL:url];

这一切都与我无法判断玩家是在加载(缓冲)还是在玩? 我曾尝试在许多属性上使用KVO,但似乎没有一个方法能够让我找到一种简单的方法来确定AVPlayer当前是否正在播放音频或是否正在加载数据。这让我疯了。

提前感谢您的建议

1 个答案:

答案 0 :(得分:2)

通过创建定期时间观察(使用addPeriodicTimeObserverForInterval:queue:usingBlock:)来检测播放时间何时开始移动,您可以检测何时完成缓冲并开始播放。例如:

AVPlayer *player;

// allocate AVPlayer and start playing

__weak PlayerController *blockSelf = self;
id observerToken = [player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(1.0, NSEC_PER_SEC)
                                                              queue:nil
                                                         usingBlock:^ (CMTime time)
                    {
                        if (CMTimeGetSeconds(time) > 0.0)
                        {
                            // done buffering, should be playing now

                            [player removeTimeObserver:[blockSelf playerTimeObserverToken]];
                            [blockSelf setPlayerTimeObserverToken:observerToken:nil];
                        }
                    }];

[self setPlayerTimeObserverToken:observerToken]; // Keep a reference to the token for later use in block.