Я использую алгоритм Мэтта Галлахера для потоковой передачи mp3 в iOS, но иногда, когда вы приостанавливаете приложение и через некоторое время возобновляете воспроизведение песни, появляется сообщение: «Невозможно настроить чтение сетевого потока». Я проанализировал код, но не вижу, как обойти эту ошибку. Кому-нибудь удалось лучше справиться с этой ошибкой?
AudioStreamer Мэтта Галлахера в iPhone - невозможно настроить сетевой поток чтения
comment
Любые ответы, которыми вы могли бы поделиться по этому поводу?
- person Andre Cytryn   schedule 17.04.2012
comment
У меня была эта проблема, когда нет подключения к Интернету. Может ли это быть фактором? Это когда вы переходите от или к Wi-Fi?
- person Jensen2k   schedule 18.04.2012
Ответы (1)
Я испытал то же самое с этим сторонним приложением и не смог найти для этого решения, а затем я попробовал собственный avplayer от Apple (не 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");
}
}
Надеюсь, это поможет.
person
iremk
schedule
30.04.2012