2012-07-30 219 views
6

我想在iPhone中使用URL鏈接播放音樂文件。但是,當我使用下面的代碼時,我得到的錯誤我沒有得到我錯誤的地方。任何人都可以糾正我嗎?如何在iPhone中使用URL鏈接播放音樂文件?

-(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

錯誤是什麼? – 2012-07-30 06:17:54

+1

@ H2CO3在運行時錯誤AudioPlayer [1012:10703] ***由於未捕獲的異常'NSInvalidArgumentException',原因:' - [NSConcreteData baseURL]:無法識別的選擇器發送到實例0x7345540' ***終止應用程序***第一次拋出調用堆棧 – Abhilash 2012-07-30 06:22:44

+0

你正試圖通過NSData到NSURL,那是給你的錯誤。 「initWithContentsOfURL:_objectData」 – 2012-07-30 06:30:41

回答

14

這應該工作:

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

使用下面的代碼來播放音樂:

[self.player play];

+0

在上面的代碼播放器是AVPlayer的對象。關於playerITem?Bcoz我得到這麼多錯誤。 – Abhilash 2012-07-30 07:11:06

+0

self.playerItem是AVPlayerItem的一個對象,self.player是AVPlayer – 2012-07-30 07:13:06

+0

的一個對象,它有未聲明的&ItemsStatuscontext和PlayerstatusContext錯誤 – Abhilash 2012-07-30 07:27:46

0

當前答:

現在考慮Why does AVAudioPlayer initWithContentsOfURL always fail with error code=-43鏈接。其解決方案是avplayer鏈接

剛纔的答覆

//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

感謝ü但還是錯誤是AudioPlayer [1125:10703]錯誤域= NSOSStatusErrorDomain代碼= -43 – Abhilash 2012-07-30 06:33:50

+0

「操作無法完成(OSStatus錯誤-43)。」回答編輯使用initWithURL而不是initWithContentsOfURL – 2012-07-30 06:39:52

+0

沒有它不工作以前的錯誤正在重複***由於未捕獲的異常'NSInvalidArgumentException'終止應用程序 – Abhilash 2012-07-30 06:43:38

0

試試我的代碼:

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

    [yourMediaPlayer play]; 

^- ^,我使用的MPMoviePlayerController與上面的代碼。

5

嘗試以下操作:

-(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

我猜你發送

audioPlayer.numberOfLoops = -1; 

接收NSInvalidArgumentException其更改爲

audioPlayer.numberOfLoops = 1; 

,並檢查Apple的文檔here

相關問題