Ios AVPlayer Observer从未调用无效的URL
我正在尝试做一个基本的广播应用程序,我得到了一个URL列表:当我试图调用一个无效的URL(错误路径或没有可播放文件的正确路径)时,观察者似乎永远不会被调用。以下是我的部分代码:Ios AVPlayer Observer从未调用无效的URL,ios,avplayer,Ios,Avplayer,我正在尝试做一个基本的广播应用程序,我得到了一个URL列表:当我试图调用一个无效的URL(错误路径或没有可播放文件的正确路径)时,观察者似乎永远不会被调用。以下是我的部分代码: urlStream = [NSURL URLWithString:mp3URL]; self.playerItem = [AVPlayerItem playerItemWithURL:urlStream]; [playerItem addObserver:self
urlStream = [NSURL URLWithString:mp3URL];
self.playerItem = [AVPlayerItem playerItemWithURL:urlStream];
[playerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil];
[playerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil];
[appDelegate.player addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
[appDelegate.player replaceCurrentItemWithPlayerItem:playerItem]; //OK
[appDelegate.player play];
在相对观察者方法中,我得到:
if (object == playerItem && [keyPath isEqualToString:@"playbackBufferEmpty"])
{
if (playerItem.playbackBufferEmpty)
{
NSLog(@"playbackBufferEmpty");
[self alertBuffer];
}
}
if (object == playerItem && [keyPath isEqualToString:@"playbackLikelyToKeepUp"])
{
if (playerItem.playbackLikelyToKeepUp)
{
NSLog(@"playbackLikelyToKeepUp");
[loadStation stopAnimating];
if (playerItem.status == AVPlayerItemStatusReadyToPlay) {
NSLog(@"AVPlayerItemStatusReadyToPlay");
}
else if (playerItem.status == AVPlayerStatusFailed) {
NSLog(@"AVPlayerStatusFailed");
}
else if (playerItem.status == AVPlayerStatusUnknown) {
NSLog(@"AVPlayerStatusUnknown");
}
}
}
else if (object == appDelegate.player && [keyPath isEqualToString:@"status"]) {
if (appDelegate.player.status == AVPlayerStatusReadyToPlay) {
NSLog(@"Player Status = Ready to Play");
}
if (appDelegate.player.status == AVPlayerStatusUnknown) {
NSLog(@"Player Status = Sometimes did wrong.");
[self alertUnknown];
}
if (appDelegate.player.status == AVPlayerStatusFailed) {
NSLog(@"Player Status = Status Failed.");
[self alertStatusFailed];
}
}
无论我调用什么URL,我只得到ReadyToPlay状态:当我选择无效URL时,什么都不会发生。
URL不起作用的一个例子是:
我错在哪里
非常感谢。好的,我发现了我的错误:我将observer添加到appDelegate.player以捕获错误URL,而我所要做的就是添加到playerItem:
[playerItem addObserver:self forKeyPath:@"status" options:0 context:nil];
在相对方法中:
if ([playerItem status] == AVPlayerStatusFailed) {
NSLog(@"playerItem Status = Failed.");
NSLog(@"Error = %@",error.description);
return;
}
现在没事了
塔克斯