我正在开发一个iPhone应用程序,我需要在iPhone上下载并保存 mp3媒体并播放它, 我下载了下载工作并将数据放入NSMutableData变量但如何将这些数据保存为mp3文件
任何建议:)
答案 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];'