Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 了解AVPlayer是否正在从internet加载或播放mp3_Ios_Avplayer - Fatal编程技术网

Ios 了解AVPlayer是否正在从internet加载或播放mp3

Ios 了解AVPlayer是否正在从internet加载或播放mp3,ios,avplayer,Ios,Avplayer,我想用AVPlayer从互联网上播放.mp3 [[AVPlayer alloc] initWithURL:url]; 这一切都离不开一个事实,即我无法判断玩家是在加载(缓冲)还是在玩? 我曾尝试在许多属性上使用KVO,但似乎没有一个属性能为我提供一种简单的方法来确定AVPlayer当前是否正在播放音频或是否正在加载数据。它快把我逼疯了 提前感谢您的建议您可以通过创建定期时间观察(使用addPeriodicTimeObserverForInterval:queue:usingBlock:)来检测

我想用AVPlayer从互联网上播放.mp3

[[AVPlayer alloc] initWithURL:url];
这一切都离不开一个事实,即我无法判断玩家是在加载(缓冲)还是在玩? 我曾尝试在许多属性上使用KVO,但似乎没有一个属性能为我提供一种简单的方法来确定AVPlayer当前是否正在播放音频或是否正在加载数据。它快把我逼疯了


提前感谢您的建议

您可以通过创建定期时间观察(使用
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.

什么是playerTimeObserverToken方法?@BrandonA它只是self上的一个属性,用于跟踪观察者标记,以便在调用块时使用。我已经更新了示例以澄清。