0

我正在制作一个用户可以按下前进/后退按钮的应用程序。每次按下这些按钮时,任何当前正在播放的音频文件都会停止,并开始另一个音频文件。所有这些文件都不会循环。

我正在使用类似于以下的代码播放音频文件:

audioURL2 = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"sound2" ofType:@"aac"]];
            audio2 = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL2 error:nil];
            [audio2 play];
            audio1 = nil;
            audio3 = nil;

我启用了 ARC,所以我没有明确发布音频文件。

在大多数情况下,上面的代码工作正常。我在我的 iPhone 设备、iPhone 或 iPad 模拟器上都没有遇到问题。我的 iPad 设备上的大部分音频也可以使用。

但是,其中一个音频文件没有完全播放,即使我在播放时避免触摸按钮。每次我在 iPad 上播放此音频文件时,我都能听到音频文件的开头,但随后在同一位置被切断。这个问题只发生在我的 iPad 上,不会出现在任何其他设备或模拟器上。

这是我到目前为止所尝试的:

  • 从 iPad 上删除了该应用程序。清理、重建并重新安装应用程序
  • 重新启动 iPad
  • 确保静音/软静音已关闭
  • 切换静音/软静音几次,然后关闭静音
  • 增加 iPad 的音量

在尝试了上述每个之后,我发现同一个音频文件在同一个地方被切断了。

为什么会发生这种情况,并且只针对一个文件?我该如何解决?

更新

我尝试@property (strong, nonatomic) AVAudioPlayer *audio2;在我的标题中使用,然后尝试用“保留”替换“强”,但我仍然遇到同样的问题。

接下来,我在播放调用之前卡住audio2.numberOfLoops = 1;了,看看会发生什么。有趣的是,audio2 确实重复了,但每个循环都在之前的截止点处结束。将 sound2 添加到 iPad 版本时可能出了什么问题?

4

1 回答 1

0

看来我的 sound2.aac 文件以某种方式损坏了。我从我的应用程序中删除了文件并清理了项目。然后我重新保存了 .aac 文件,将这个新的 .aac 文件带入项目,并再次清理它。再次在我的 iPad 上运行后,sound2.aac 可以完整播放。

于 2013-08-02T18:39:34.753 回答