sound play contentsof iphone url audio avaudioplayer

iphone - contentsof - avaudioplayer swift 4



AVAudioPlayer con URL externa a*.m4p (3)

AVAudioPlayer solo funciona con URL locales. Debe ser un archivo URL (archivo: //)

Ver las preguntas y respuestas técnicas de Apple QA1634

Mi problema es el siguiente. Obtuve este código y supongo que un NSURL corrupto ya que el AVAudioPlayer es nulo después de inicializar:

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];

¿Alguna sugerencia de lo que va mal aquí?

El error & muestra esto:

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


En lugar de utilizar AVAudioPlayer, puede utilizar AVPlayer. El AVPlayer funciona también con URL remotas


Intenté esto primero pero obtuve el error 2003334207:

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

Parece que AVAudioPlayer realmente quiere un archivo. Así que puse los datos en un archivo primero:

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);