AVAudioPlayer 突然不再播放整个音频源
Posted
技术标签:
【中文标题】AVAudioPlayer 突然不再播放整个音频源【英文标题】:AVAudioPlayer suddenly no longer plays entire audio source 【发布时间】:2014-10-25 18:57:36 【问题描述】:我正在使用 AVAudioPlayer 在我的应用程序中播放音频,并且它工作了一段时间。突然,它停止工作,我不知道为什么。我在 .h 文件的类级别创建了 AVAudioPlayer。这是我用来初始化播放器的代码
-(void)initAudio
NSURL *song = [[NSBundle mainBundle] URLForResource:@"Prelude" withExtension:@"m4a"];
NSError *error = nil;
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:song error:&error];
[_audioPlayer prepareToPlay];
我在 initWithSize 函数中调用了这个方法。错误为零,我已经验证播放器对象包含实际的音频文件。音频文件在我的操作系统环境中可以正常播放,为了安全起见,我已经尝试将其添加到构建阶段编译源中,即使在没有明确存在的情况下它也可以正常工作。当我触发播放事件时,它将播放音频的第一个 sn-p,然后什么也不播放。我记录了播放器的当前时间,它是 0。有关该应用程序的其他所有内容都在继续运行,并且正常运行。除了播放/暂停/准备播放之外,我不会以任何方式干扰 avaudioplayer 对象。
我完全被难住了,因为它工作正常,然后突然不再工作。我试图清理项目,我什至转储了derivedData。
有什么想法吗?
【问题讨论】:
【参考方案1】:我认为您的播放器在您尝试播放歌曲时出现错误。
你需要先检查错误。
在我看来,这似乎是 OSStatus 错误 -43。
当您更新应用程序时,可以更改文件路径。
例如, 旧路径:/var/mobile/Applications/F28E0C2C-4AE2-4C9D-906F-414AE1669D90/Documents/AAA.mp3
新路径:var/mobile/Applications/6086783B-A410-42C3-9BAE-7BA755D0E528/Documents/AAA.mp3
试试这个代码:
NSError *error;
NSURL *song = [[NSBundle mainBundle] URLForResource:@"Prelude" withExtension:@"m4a"];
_audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:song error:&error];
if(error)
NSLog(@"[error localizedDescription] %@", [error localizedDescription]);
NSString *fileName = [[song absoluteString] lastPathComponent]; //this code is just example. get your fileName like "AAA.m4a"
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", docDirPath , fileName];
_audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL URLWithString:filePath] error:&error];
_audioPlayer.delegate = self;
[_audioPlayer prepareToPlay];
[_audioPlayer play];
希望对你有帮助。
干杯
【讨论】:
感谢您的回答。应用程序运行过程中的任何阶段都没有错误。我在每个阶段都设置了断点并进行了调试。一切正常,&error = nil。我想我忘了把它包含在原文中。我没有将代理设置为 self,我会尝试这个更改,看看是否有帮助。以上是关于AVAudioPlayer 突然不再播放整个音频源的主要内容,如果未能解决你的问题,请参考以下文章