2009-10-22 12 views
17

Mój problem jest następujący. Mam ten kod i myślę skorumpowanego bibliotece NSURL ponieważ AVAudioPlayer jest zerowa po inicjalizacji:AVAudioPlayer z zewnętrznym adresem URL do * .m4p

NSString *dummyURLString = @"http://a825.phobos.apple.com/us/r2000/005/Music/d8/a8/d2/mzi.jelhjoev.aac.p.m4p"; 
NSError *error; 
NSURL *url = [NSURL URLWithString:dummyURLString]; 
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
[player play]; 

Wszelkie sugestie co jest nie tak tutaj?

Błąd & pokazuje to:

Error Domain=NSOSStatusErrorDomain Code=-43 "Operation could not be completed. (OSStatus error -43.)" 
+0

Skąd się wziął URL? – mahboudz

Odpowiedz

9

Próbowałem ten pierwszy, ale mam błąd 2003334207:

NSData *soundData = [NSData dataWithContentsOfURL:URL]; 
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:soundData error:&error]; 

Wydaje się, że naprawdę chce AVAudioPlayer plik. Dlatego najpierw umieszczam dane w pliku:

NSURL *url = [NSURL URLWithString:@"http://a825.phobos.apple.com/us/r2000/005/Music/d8/a8/d2/mzi.jelhjoev.aac.p.m4p"]; 
NSData *soundData = [NSData dataWithContentsOfURL:url]; 
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
         NSUserDomainMask, YES) objectAtIndex:0] 
         stringByAppendingPathComponent:@"sound.caf"]; 
[soundData writeToFile:filePath atomically:YES]; 
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL 
       fileURLWithPath:filePath] error:NULL]; 
NSLog(@"error %@", error); 
+0

Wielkie dzięki, to rozwiązało pierwszy krok :) Ale wydaje mi się, że AVAudioPlayer nie może odtworzyć pliku m4p :(... nie rozpoczyna się odtwarzanie lub nie odpowiada na żadną metodę delegata :( – tommy

+0

nowy kod, spróbuj, mam go zagrać przez krótką chwilę, a potem się zatrzymał, wciąż bada, gdzie jest adres URL z? – mahboudz

+0

Dzięki twojej fantastycznej odpowiedzi, mogę naprawić to podobny problem. – zono

6

Zamiast korzystać z AVAudioPlayer można korzystać z AVPlayera. AVPlayer działa również ze zdalnymi adresami URL

Powiązane problemy