Узнайте, загружает ли AVPlayer или воспроизводит mp3 из Интернета

Я хотел бы использовать AVPlayer для потоковой передачи .mp3 из Интернета.

[[AVPlayer alloc] initWithURL:url];

Все это работает, за исключением того факта, что я не могу определить, загружается ли игрок (буферизируется) или играет? Я пытался использовать KVO во многих свойствах, но ни одно из них, похоже, не дает мне простого способа определить, действительно ли AVPlayer воспроизводит в данный момент звук или загружает данные. Это сводит меня с ума.

Спасибо за ваши предложения заранее


person stringCode    schedule 20.10.2013    source источник


Ответы (1)


Вы можете определить, когда буферизация завершена и воспроизведение началось, создав периодическое наблюдение времени (используя 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.
person BergQuester    schedule 20.10.2013
comment
Что такое метод playerTimeObserverToken? - person Brandon A; 16.11.2015
comment
@BrandonA Это просто свойство self для отслеживания токена наблюдателя для использования при вызове блока. Я обновил пример, чтобы уточнить. - person BergQuester; 24.11.2015