我想播放从我的服务器检索到的声音文件,作为基本64编码文件。使用AVAudioPlayer从NSData播放声音iOS
到目前为止,我使用Base64已解码的文件,并将其写入到一个文件像这样:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"voicemail.wav"]];
[fileManager createFileAtPath:filepath contents:[responseDict objectForKey:@"ResponseData"] attributes:nil];
但是,我无法实际播放声音文件。我的代码返回错误:
The operation couldn't be completed. OSStatus error 2003334207.
请你能告诉我我哪里出错了吗?
NSURL * url = [NSURL fileURLWithPath:filePath];
AVAudioPlayer *sound = [[[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err] autorelease];
if (! sound) {
NSLog(@"Sound had error %@", [err localizedDescription]);
} else {
[sound prepareToPlay];
[sound play];
}
我会在模拟器中运行这一点,看看voicemail.wav多的肯定它确实是一个正确的wav文件,使用'文件voicemail.wav'并在iTunes等方面发挥它还要确保您将AVAudioPlayer实例指定为一个strong/retain属性,就像您当前的示例代码一样,即使在开始播放声音之前它可能会(自动)发布。 –
感谢Mattias,问题出在wav文件中,并且能够解决它。感谢您的展示方式。 – SST
不错。任何与使用iOS API或其他人的东西有关的错误都可能遇到?那么我认为你应该用调查结果回答你自己的问题,以及你如何解决问题。 –