2014-06-17 45 views
0

我在iPad上录制了一个声音文件。该文件保存在文档目录中。现在我想播放这个声音,但是我得到一个错误。用AVAudioPlayer和有效的URL播放声音

我想玩的声音是这样的:

NSURL *soundFileURL = [NSURL URLWithString:ulrString]; 
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL 
                 error:&err]; 

soundFileURL是:

Printing description of soundFileURL: 
/var/mobile/Applications/1824FDFA-18D7-472F-8C4D-16270372F9C9/Documents/Aufnahme-M-bi-1-7.m4a 
(lldb) 

但我得到一个错误:

Error Domain=NSOSStatusErrorDomain Code=1685348671 "The operation couldn’t be completed. (OSStatus error 1685348671.)" 

我也曾尝试以下操作路径声音文件:

@"file:///var/mobile/Applications/1824FDFA-18D7-472F-8C4D-16270372F9C9/Documents/Aufnahme-M-bi-1-7.m4a" 

但是,这也简化版​​,工作:/

回答

1

该文件格式不正确。它向您报告kAudioFileInvalidFileError

尝试使用其他格式,例如.caf,看看是否有效。

我在过去播放不是来自iTunes的文件时遇到过问题.m4a

再次尝试其他格式以缩小问题的范围。我的猜测是,当你切换到另一种格式时它会工作,因为你的代码对我来说似乎很好。

希望这会有所帮助。

+1

是的,这是真的。 .m4a只适用于这种情况下的模拟器。我用kAudioFormatMPEG4AAC切换到.caf工作正常。谢谢! –

0

你如何定义你的AVAudioPlayer?如果您使用ARC,它必须是强类型的属性。

@property (strong,nonatomic) AVAudioPlayer *audioPlayer; 

另外,你是否为你想播放的m4a文件正确设置音频会话?

AVAudioSession *session = [AVAudioSession sharedInstance]; 
[session setCategory:AVAudioSessionCategoryRecord error:nil]; 
[session setActive:YES error:nil]; 
+0

是的一切都是这样设置的。在模拟器工作正常:/ –

相关问题