2012-09-16 39 views
0

我有一個幾乎可以工作的功能。根據您所在的頁面播放不同的音頻文件。問題是,一些音頻文件突然結束。例如,儘管音頻文件播放到結尾的「情況1」,上「的情況下2」它在停止約90%。AVAudioPlayer在文件結束前停止

- (void)playAudio 
{ 
    NSURL *audioURL; 
    [voiceAudio release]; 

    switch (pageNumber) 
    { 
     case 1: 
      audioURL = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"file1" ofType:@"aac"]]; 
      voiceAudio = [[AVAudioPlayer alloc] 
            initWithContentsOfURL:audioURL error:nil]; 
      [audioURL release]; 
      voiceAudio.delegate = self; 
      [voiceAudio play]; 
      break; 

     case 2: 
      audioURL = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"file2" ofType:@"aac"]]; 
      voiceAudio = [[AVAudioPlayer alloc] 
            initWithContentsOfURL:audioURL error:nil]; 
      [audioURL release]; 
      voiceAudio.delegate = self; 
      [voiceAudio play]; 
      break; 

     // And so on... 
    } 
} 

AACS中是長几分鐘。也許有更好的方法去做這件事? AVAudioPlayer可以有點時髦。謝謝!

+1

與您的問題無關,但您可以通過放置''audioURL release';'''voiceAudio.delegate = self;'和'[voiceAudio play];'只需要在交換機中重複某些代碼行一次在switch語句之後。 – 2012-09-18 09:45:41

+0

謝謝,我最終這麼做了。 – Alex

回答

1

編輯:AVAudioPlayer與我在Adobe Soundbooth製作的64kb單聲道AAC有點不可預知,但在將文件重新混合到M4A後似乎運行良好。我用MP4Box使用語法,將它們轉換: 「mp4box -add source.aac:MPEG4 -sbr -iPod target.m4a」(credit

重新編碼到一個較高的比特率(128KB)似乎解決了一些,但不是全部,這些文件也是如此。在我發現remuxing之前,我沒有徹底測試過。

+0

除了解決這個問題,切換到m4a還解決了音頻無法從中斷中恢復的問題(即電話呼叫)。 – Alex