AVPlayer缓冲问题

时间:2014-09-01 09:22:18

标签: ios xcode avplayer

我的应用程序中有一个AVPlayer正在播放流中的视频文件,我的问题是它有时会冻结,我必须再次按下播放按钮才能恢复。对于缓冲问题,我使用了以下代码,但仍然没有成功,任何人都可以建议我一个解决方案。

在ViewDidLoad方法

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

在observeValueForKeyPath方法

if (!mPlayer)
{
    return;
}

else if (object == mPlayerItem && [path isEqualToString:@"playbackBufferEmpty"])
{
    if (mPlayerItem.playbackBufferEmpty) {
        //Your code here
    }
}

else if (object == mPlayerItem && [path isEqualToString:@"playbackLikelyToKeepUp"])
{
    if (mPlayerItem.playbackLikelyToKeepUp)
    {
        //Your code here
    }
}

但上面的if语句永远不会被调用。此外,我正在使用此处演示的AVPlayerDemo类:https://developer.apple.com/library/ios/samplecode/AVPlayerDemo/Listings/Classes_AVPlayerDemoPlaybackViewController_m.html

1 个答案:

答案 0 :(得分:3)

我认为你的错误是试图在玩家而不是玩家物品上添加观察者

您的代码应为

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

干杯