2012-07-30 9 views
6

Quiero reproducir un archivo de música usando el enlace URL en el iPhone. Pero cuando uso el siguiente código, recibo un error. No estoy llegando a donde me estoy equivocando. ¿Alguien puede corregirme?¿Cómo reproducir un archivo de música usando el enlace URL en iPhone?

-(void)viewDidLoad 

{ 

[super viewDidLoad]; 
NSString* resourcePath = @"http://192.167.1.104:8888/SHREYA.mp3"; //your url 

NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:resourcePath]]; 
NSError *error; 


audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:_objectData error:&error]; 
audioPlayer.numberOfLoops = -1; 

if (audioPlayer == nil) 
    NSLog([error description]);    

else 
    [audioPlayer play]; 
} 
+2

¿cuál es el error? –

+1

@ H2CO3 error durante el tiempo de ejecución AudioPlayer [1012: 10703] *** Aplicación de finalización debido a excepción no detectada 'NSInvalidArgumentException', razón: '- [NSConcreteData baseURL]: selector no reconocido enviado a la instancia 0x35345540' *** Pila de primer tiro de llamadas – Abhilash

+0

Está intentando pasar NSData a NSURL, eso le está dando el error. "initWithContentsOfURL: _objectData" –

Respuesta

14

Esto debería funcionar:

NSURL *url = [NSURL URLWithString:@"<#Live stream URL#>]; 

// You may find a test stream at <http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8>. 

self.playerItem = [AVPlayerItem playerItemWithURL:url]; 

//(optional) [playerItem addObserver:self forKeyPath:@"status" options:0 context:&ItemStatusContext]; 

self.player = [AVPlayer playerWithPlayerItem:playerItem]; 

self.player = [AVPlayer playerWithURL:<#Live stream URL#>]; 

//(optional) [player addObserver:self forKeyPath:@"status" options:0 context:&PlayerStatusContext]; 

Utilice el siguiente código para reproducir la música:

[self.player play];

+0

En el código anterior, el reproductor objeto de AVPlayer.what about playerITem?Bcoz tengo tantos errores. – Abhilash

+0

self.playerItem es un objeto de AVPlayerItem y self.player es un objeto de AVPlayer –

+0

que tiene un error con undeclared & ItemsStatuscontext y PlayerstatusContext – Abhilash

0

respuesta actual:

Consideremos ahora Why does AVAudioPlayer initWithContentsOfURL always fail with error code=-43 enlace. su solución es avplayer enlace

A principios de Respuesta

//You have to pass NSURL not NSData 
NSString* resourcePath = @"http://192.167.1.104:8888/SHREYA.mp3"; //your url 
NSURL *url = [NSURL alloc]initWithString:resourcePath]; 
audioPlayer = [[AVAudioPlayer alloc] initWithURL:url error:&error]; 

audioPlayer.delegate = self; 
[url release]; 

[audioPlayer prepareToPlay]; 
[audioPlayer play]; 
+0

Gracias pero todavía error es AudioPlayer [1125: 10703] Error Domain = NSOSStatusErrorDomain Code = -43 "La operación no se pudo completar. (OSStatus error -43.)" – Abhilash

+0

responder el uso editado initWithURL en lugar de initWithContentsOfURL –

+0

No, pero no funciona, el error anterior se repite *** Aplicación de terminación debido a una excepción no detectada 'NSInvalidArgumentException' – Abhilash

0

intentar mi código :

NSURL *filepath = [NSURL fileURLWithPath:audioFilePath]; 
[yourMediaPlayer setContentURL:filepath]; 
    //set player. 
    yourMediaPlayer.controlStyle = MPMovieControlStyleNone; 
    yourMediaPlayer.currentPlaybackTime = 0; 
    yourMediaPlayer.shouldAutoplay = FALSE; 

    [yourMediaPlayer play]; 

^- ^, uso MPMoviePlayerController con el código anterior.

5

intente lo siguiente:

-(void)viewDidLoad 

{ 

[super viewDidLoad]; 
NSString* resourcePath = @"your url"; //your url 

NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:resourcePath]]; 
NSError *error; 


audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error]; 
audioPlayer.numberOfLoops = 1; 

if (audioPlayer == nil) 
    NSLog([error description]);    

else 
    [audioPlayer play]; 
0

supongo que está enviando

audioPlayer.numberOfLoops = -1; 

recibir NSInvalidArgumentException cambiarlo a

audioPlayer.numberOfLoops = 1; 

y comprobar la documentación de Apple here

Cuestiones relacionadas