我的应用程序中有一个AVPlayer,它正在播放流中的视频文件,我的问题是它有时会冻结,我必须再次按下播放按钮才能继续。对于缓冲问题,我使用了以下代码,但仍然没有成功,有人能给我一个解决方案吗。
在ViewDidLoad方法中
[mPlayer addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil];
[mPlayer addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil];
在KeyPath方法的观测值中
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
我认为你的错误是试图在玩家上添加观察员,而不是玩家物品
你的代码应该是
[mPlayerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil];
[mPlayerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil];
干杯