我使用AVPlayer来流式传输。我正在尝试处理所有错误,例如网络不可用或流不可用 但是我找到了这种错误的处理程序。
我已经在avplayer的状态中添加了一个KVO。
[self.player addObserver:self forKeyPath:@"status" options:0 context:nil];
但即使流不存在(例如:错误的url),状态也会切换到AVPlayerStatusReadyToPlay。
修改
解决方案是使用AVPLayerItems并使用AVQueuPlayer。另一个问题是我在每个轨道上重新分配了这个播放器。
答案 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那样激发。