2009-07-29 135 views
1

我初始化AVAudioPlayer實例:AVAudioPlayer沒有響應

NSString* path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"wav"]; 

AVAudioPlayer* player =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; //Returned object not nil, indicating that the file has loaded successfully 


BOOL b = [player prepareToPlay]; //returns TRUE 

BOOL b2 = [player play]; 
//returns TRUE, goes immediately to the next line since asynchronous 


[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]; //wait 1 sec 

printf("%10.4f\n",player.duration); //duration is 2s 

printf("%10.4f\n",player.currentTime); //position remains 0 

/* There is no sound output, player is also stuck since position==0 */ 

有誰知道爲什麼AVAudioPlayer沒有響應?在初始化,播放音頻播放器時,是否有一些我可以忽略?樣板代碼可能?

我在iPhone模擬器上運行這個。此外,AudioServicesPlaySystemSound()適用於相同的文件,這令人費解,但這表明聲音播放也可能適用於AVAudioPlayer。

回答

2

我有2點快速建議:看

  1. 檢查,如果這條道路,其實是給予你的數據。使用[[NSData alloc] initWithContentsOfFile:path]分配一個NSData對象,並在調試器中檢查它是否實際加載該wav文件。

  2. 我寫了一個示例項目,在這裏使用AVAudioPlayer:AVAudioPlayer Example。由於代碼與您的代碼非常相似,我可以想象的唯一情況是您的數據存在問題。

檢查出來,看看它是否讓你任何地方!

2

我剛剛有一個類似的問題。我不確定它是否是相同的解決方案,但我的應用程序通過iphone記錄音頻,然後將其播放回用戶。

我以爲我告訴我的音頻會話,它是要記錄的數據做了正確的事情,所以我做了以下內容:

[audioSession setCategory:AVAudioSessionCategoryRecord error:nil]; 

使用該設置播放製作的模擬器,但不上設備.... didFinishPlaying事件永遠不會升起。

我意識到我不需要它,音頻播放開始正常工作後,我刪除了這一行。現在我只需要弄清楚爲什麼它如此安靜:)

保羅