2

オーディオストリーミングを再生するアプリで作業しています。インターネット接続が失われたときの「バッファリング」メッセージを実装するために、observers:playbackBufferEmpty と PlaybackLikelyToKeepUp を追加しました。これは、次のコードで起こることです: 問題なく再生を開始します。「good to go」メッセージが表示されます。接続が失われた場合は、playbackBufferEmpty が検出されます。「バッファリング」メッセージが表示されますが、接続が回復すると、オブザーバーが失われたように、playbackLikelyToKeepUp でobserveValueForKeyPath メソッドを実行することすらありません。

これが私のコードです:

- (void)viewDidLoad
{    
    …
    NSString *urlstr = @"http://xxxxxxx.aac";
    NSURL *url=[NSURL URLWithString:urlstr];
    playerItem = [[AVPlayerItem playerItemWithURL:url]retain];

    [playerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil];
    [playerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil];

    player = [[AVPlayer playerWithPlayerItem:playerItem] retain];

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                    change:(NSDictionary *)change context:(void *)context {



   if (object == playerItem && [keyPath isEqualToString:@"playbackBufferEmpty"]){



        if (playerItem.playbackBufferEmpty) {

        escuchando.text = @"buffering";


    }
}

else if (object == playerItem && [keyPath isEqualToString:@"playbackLikelyToKeepUp"])
{
    if (playerItem.playbackLikelyToKeepUp)
    {

        escuchando.text = @"good to go";

    }
}

ご協力いただきありがとうございます!

4

0 に答える 0