これを行うには、KVOを使用する必要があります。あなたがキューに追加されている各項目については
、あなたはこのような設定のオブザーバーがあります。今、あなたはオブザーバメソッド内でその項目の状態を
item_ = [[AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://somefunkyurl"]] retain];
[item_ addObserver:self forKeyPath:@"status" options:0 context:nil];
[item_ addObserver:self forKeyPath:@"playbackBufferEmpty" options:0 context:nil];
を評価することができます。あなたが活動の指標または「バッファリング」の警告を表示することができるように
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([object isKindOfClass:[AVPlayerItem class]])
{
AVPlayerItem *item = (AVPlayerItem *)object;
//playerItem status value changed?
if ([keyPath isEqualToString:@"status"])
{ //yes->check it...
switch(item.status)
{
case AVPlayerItemStatusFailed:
NSLog(@"player item status failed");
break;
case AVPlayerItemStatusReadyToPlay:
NSLog(@"player item status is ready to play");
break;
case AVPlayerItemStatusUnknown:
NSLog(@"player item status is unknown");
break;
}
}
else if ([keyPath isEqualToString:@"playbackBufferEmpty"])
{
if (item.playbackBufferEmpty)
{
NSLog(@"player item playback buffer is empty");
}
}
}
}
また、あなたのバッファが再生中に空になったときに/かどうかを検出するためにAVPlayerItemオブジェクトのplaybackBufferEmptyプロパティを観察することができます。 – reddersky
@virorum良い点は、私の答えに1つを加えました。 – Till
あなたが好きなら、いつでも私のコメントをアップすることができます;-) – reddersky