AVAudioPlayer突然不再播放整个音频源

时间:2014-10-25 18:57:36

标签: ios objective-c xcode audio avaudioplayer

我正在使用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函数中调用此方法。错误是零,我已经验证播放器对象包含实际的音频文件。音频文件在我的操作系统环境中播放得很好,我尝试将它添加到构建阶段编译源只是为了安全,即使事先它没有明确地在那里工作正常。当我触发播放事件时,它将播放音频的第一个片段然后什么都没有。我记录播放器的当前时间,它是0.关于应用程序的其他所有内容都在继续,功能没有问题。除了播放/暂停/ preparetoplay之外,我不会以任何方式干扰avaudioplayer对象。

我完全难过,因为它工作正常然后突然不再起作用。我试图清理项目,我甚至抛弃了derivedData。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为当您尝试播放歌曲时,您的播放器会出错。

您需要先检查错误。

在我看来,似乎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];

}

我希望这会对你有所帮助。

干杯