2011-01-05 61 views
3

我想玩放在資源,代碼如下MP3文件不能播放MP3文件,使用AVAudioPlayer

NSString *[email protected]"alarm_1.mp3"; 
NSLog(st); 
NSURL* musicFile = [NSURL fileURLWithPath:st]; 

AVAudioPlayer *click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil]; 

//AVAudioPlayer *click1=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL URLWithString:@"alarm_1.mp3"]]; 

[click prepareToPlay]; 
[click play]; 
[click release]; 

但遺憾的是我不能聽到聲音 請幫助

回答

6

我不不要以爲你的文件名是正確的。試試這個語法:

NSURL *clickURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/alarm_1.mp3", [[NSBundle mainBundle] resourcePath]]]; 
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:clickURL error:nil]; 
+0

謝謝,我只是試着找到答案 – Ali 2011-01-05 05:27:38

1
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/alarm_1.mp3", [[NSBundle mainBundle] resourcePath]]]; 

NSError *error; 
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
audioPlayer.numberOfLoops = -1; 

[audioPlayer play]; 

這是回答

+2

爲什麼你打擾創建一個NSError *並將它傳遞給AudioPlayer初始化程序,然後不打擾檢查返回值並處理錯誤? – Abizern 2011-01-05 09:01:57

2

我也有類似的問題,是由於ARC。你不應該使用與你使用的方法相同的方法來定義AVAudioPlayer,而應該在其他地方有一個實例變量,比如UIViewController。這樣ARC不會自動釋放這個對象並且音頻可以播放。

+0

是的,這裏的關鍵是播放「聲音是異步播放」。 – spacious 2013-07-30 17:19:59