Matt Gallagher在iPhone上的AudioStreamer - 无法配置网络读取流

时间:2011-12-02 13:55:50

标签: iphone ios audio-streaming

我正在使用Matt Gallagher的算法在iOS中执行mp3流媒体,但有时当你暂停应用程序时,一段时间后,恢复歌曲会弹出一条消息:“无法配置网络流读取”。我已经分析了代码,但我没有看到如何解决这个错误。有没有人设法更好地应对这个错误?

Matt Gallagher's AudioStreamer code

1 个答案:

答案 0 :(得分:5)

我在第三方应用程序中遇到了同样的事情,但找不到解决方案,然后我尝试了苹果的原生avplayer(不是avaudioplayer),它使您能够使用函数:initWithURL进行流式传输。顺便说一句,这是课程参考:http://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVPlayer_Class/Reference/Reference.html

另外这里是我播放音乐的代码:

NSURL *url = [[NSURL alloc] initWithString:sourceURL];
            theItem = [AVPlayerItem playerItemWithURL:url];
            theItem addObserver:self forKeyPath:@"status" options:0 context:nil];
            theAudio = [AVPlayer playerWithPlayerItem:mainDelegate.theItem];

要了解玩家是否准备好玩你在上面添加观察者然后你可以检查它:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                        change:(NSDictionary *)change context:(void *)context {
    if (object == theItem && [keyPath isEqualToString:@"status"]) {
        if(theItem.status == AVPlayerStatusReadyToPlay)    
        {
            [theAudio play];
            [theItem removeObserver:self forKeyPath:@"status"];
        }
        else if(theItem.status == AVPlayerStatusFailed) {
            NSLog(@"%@" , mainDelegate.theItem.error.description);
        }
        else if(theItem.status == AVPlayerStatusUnknown)
            NSLog(@"unknown");
    }
}

我希望这会有所帮助。