如何使用AVPlayer处理流错误

时间:2014-06-02 22:29:25

标签: error-handling streaming audio-streaming avplayer key-value-observing

我使用AVPlayer来流式传输。我正在尝试处理所有错误,例如网络不可用或流不可用 但是我找到了这种错误的处理程序。

我已经在avplayer的状态中添加了一个KVO。

 [self.player addObserver:self forKeyPath:@"status" options:0 context:nil];

但即使流不存在(例如:错误的url),状态也会切换到AVPlayerStatusReadyToPlay。

修改

解决方案是使用AVPLayerItems并使用AVQueuPlayer。另一个问题是我在每个轨道上重新分配了这个播放器。

2 个答案:

答案 0 :(得分:6)

使用NSKeyValueObservingOptionNew将KVO添加到AVPlayerItem而不是AVPlayer。

[playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:NULL];
[self.player replaceCurrentItemWithPlayerItem:playerItem];

答案 1 :(得分:1)

您需要订阅

的通知
[nc addObserver:self selector:@selector(_itemDidError:) name:AVPlayerItemNewErrorLogEntryNotification object:_playerItem];

但那不能解决所有问题。我认为它不会像404那样激发。