我正在创建一个应用程序,用户可以按前进/后退按钮。每次按下这些按钮,任何当前播放的音频文件都会停止,另一个音频文件开始播放。所有这些文件都不会循环。
我正在播放音频文件,其代码类似于以下内容:
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上,而不是任何其他设备或模拟器上。
这是我到目前为止所尝试的内容:
尝试上述各项后,我发现相同的音频文件在同一个地方被切断。
为什么会发生这种情况,特别是只有一个文件?我该如何解决?
更新
我尝试在标题中使用@property (strong, nonatomic) AVAudioPlayer *audio2;
,然后尝试将“strong”替换为“retain”,但我仍然遇到同样的问题。
接下来,我在播放通话前卡住audio2.numberOfLoops = 1;
看看会发生什么。有趣的是,audio2确实重复,但每个循环都在之前的截止点结束。当sound2被添加到iPad版本时,可能出现了问题?
答案 0 :(得分:0)
似乎我的sound2.aac文件以某种方式损坏了。我从我的应用程序中删除了该文件并清理了该项目。然后我重新保存.aac文件,将这个新的.aac文件带入项目,然后再次清理它。再次在我的iPad上运行后,sound2.aac全部播放。