Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

play audio from internet using AVAudioPlayer

I am implementing AVAudioPlayer to play audio and it works perfectly well while playing files locally stored in the PC.

But when i give the url of some audio file over the internet, it fails sadly. Here's what the code looks like:

NSString *url = [[NSString alloc] init];  
url = @"http://files.website.net/audio/files/audioFile.mp3";  
NSURL *fileURL = [[NSURL alloc] initWithString: url];  
AVAudioPlayer *newPlayer =[[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: nil];

Could anybody please point out the problem and what could be done?
Thanks!

like image 490
Bangdel Avatar asked Sep 03 '10 12:09

Bangdel


3 Answers

Use AVPlayer to stream audio/video based on http url's. It will work fine. AVAudioPlayer is for local files. Here's the code

NSURL *url = [NSURL URLWithString:url];    
self.avAsset = [AVURLAsset URLAssetWithURL:url options:nil];    
self.playerItem = [AVPlayerItem playerItemWithAsset:avAsset];    
self.audioPlayer = [AVPlayer playerWithPlayerItem:playerItem];    
[self.audioPlayer play];
like image 150
Gautam Jain Avatar answered Oct 21 '22 18:10

Gautam Jain


This is what the Apple docs say:

The AVAudioPlayer class does not provide support for streaming audio based on HTTP URL's. The URL used with initWithContentsOfURL: must be a File URL (file://). That is, a local path.

like image 21
leviathan Avatar answered Oct 21 '22 19:10

leviathan


I tried other method initWithData on AVAudioPlayer instead of initWithContentsOfURL. First try to get MP3 file into NSData and then play this data.

Look at my code here.

like image 3
Borut Tomazin Avatar answered Oct 21 '22 20:10

Borut Tomazin