将mp3数据保存在iphone上的文件中

时间:2011-03-10 14:03:38

标签: iphone ios4 iphone-sdk-3.0 avaudioplayer

我正在开发一个iPhone应用程序,我需要在iPhone上下载并保存 mp3媒体并播放它, 我下载了下载工作并将数据放入NSMutableData变量但如何将这些数据保存为mp3文件

任何建议:)

2 个答案:

答案 0 :(得分:3)

如果要将其保存到具有.mp3文件扩展名的应用程序文档目录,可以使用以下命令:

NSString *mp3FileName = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                              NSUserDomainMask, 
                                                              YES) lastObject]
                         stringByAppendingPathComponent:@"MyFileName.mp3"];
[[NSFileManager defaultManager] createFileAtPath:mp3FileName 
                                        contents:mp3Data 
                                      attributes:nil];

其中mp3Data是你的NSMutableData。我使用类似于上面的代码来保存PDF文档,自定义文件格式,jpgs和各种类型。我没有理由尝试使用mp3,但没有理由不这样做。

将文件读回NSData以发送到AVAudioPlayer:

NSString *mp3FileName = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                          NSUserDomainMask, 
                                                          YES) lastObject]
                          stringByAppendingPathComponent:@"MyFileName.mp3"];
NSData *mp3Data = [NSData dataWithContentsOfFile:mp3FileName];
avAudioPlayer.data = mp3Data;

在未经测试的代码段之上,从未有理由在我的应用程序中使用声音。

答案 1 :(得分:2)

这是@Diziet评论附加的正确的

'//准备要保存在文件中的数据 NSData * fileData = [[NSData alloc] initWithData:(NSData *)receivedData];

NSString *mp3FileName = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject]stringByAppendingPathComponent:@"MyFileName.mp3"];
//create the file
[[NSFileManager defaultManager] createFileAtPath:mp3FileName contents:receivedData attributes:nil];

//load the file for playing
NSString *FileNamePath = [[NSString alloc] initWithString:@"MyFileName.mp3"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appSettingsPath = [documentsDirectory stringByAppendingPathComponent:FileNamePath];
NSURL *url=[[NSURL alloc]initWithString:appSettingsPath ];
player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:NULL];
player.delegate=self;
[player play];'