2012-09-16 41 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