2012-05-19 167 views
2

我想播放从我的服务器检索到的声音文件,作为基本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]; 
} 
+0

我会在模拟器中运行这一点,看看voicemail.wav多的肯定它确实是一个正确的wav文件,使用'文件voicemail.wav'并在iTunes等方面发挥它还要确保您将AVAudioPlayer实例指定为一个strong/retain属性,就像您当前的示例代码一样,即使在开始播放声音之前它可能会(自动)发布。 –

+0

感谢Mattias,问题出在wav文件中,并且能够解决它。感谢您的展示方式。 – SST

+0

不错。任何与使用iOS API或其他人的东西有关的错误都可能遇到?那么我认为你应该用调查结果回答你自己的问题,以及你如何解决问题。 –

回答

1

@Himanshu

至于建议由马蒂亚斯·瓦德曼,我尝试使用VLC/iTunes的媒体播放器播放下载的文件,该文件是不是在玩。 所以问题可能出在编码或解码文件,而不是播放音频代码。我检查了一下,编码时嵌入了一些额外的字符。 我们致力于编码并解决了问题。

希望这会有所帮助。

+0

你在使用编码来解决这个问题时究竟做了什么,请你详细说明我在播放从服务器获取的音频文件作为NSData时面临同样的问题。 – iShwar

0
NSData *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"FileName.mp3"] 
    NSURL *url = [[NSURL alloc] initFileURLWithPath: path]; 
    AVAudioPlayer *sound = [[[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err] autorelease]; 
     if (! sound) { 
     NSLog(@"Sound had error %@", [err localizedDescription]); 
     } else { 
     [sound prepareToPlay]; 
     [sound play]; 
     } 
相关问题