关于音频文件的操作
1.0 MPMediaQueue
MPMediaQuery *allMediaQueue = [[[MPMediaQuery alloc]init] autorelease]; [self.mediaItemArray addObjectsFromArray:[allMediaQueue items]]; NSLog(@"allMediaArray:%@",mediaItemArray);
以上为获取系统音频文件列表方式;
2.0 MPMediaPickerController 的使用及其转存写入沙盒
MPMediaPickerController *mpc = [[MPMediaPickerControlleralloc]initWithMediaTypes:MPMediaTypeMusic];
mpc.delegate = self;//委托
mpc.prompt =@"Please select a music";//提示文字
mpc.allowsPickingMultipleItems=NO;//是否允许一次选择多个
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { NSArray *media_array = [mediaItemCollection items]; MPMediaItem *song_item = [media_array objectAtIndex:0]; SongObject *song_object = [[SongObject alloc] init]; [song_object setSong_name:[song_item valueForProperty: MPMediaItemPropertyTitle]]; [song_object setSinger_name:[song_item valueForKey:MPMediaItemPropertyPodcastTitle]]; NSURL *url = [song_item valueForProperty:MPMediaItemPropertyAssetURL]; NSLog(@"url is %@",url); AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL:url options:nil]; AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset: songAsset presetName: AVAssetExportPresetAppleM4A]; exporter.outputFileType = @"com.apple.m4a-audio"; NSString *exportFile = [path stringByAppendingPathComponent: @"exported.m4a"]; if ([[NSFileManager defaultManager] fileExistsAtPath:exportFile]) { NSError *deleteErr = nil; [[NSFileManager defaultManager] removeItemAtPath:exportFile error:&deleteErr]; if (deleteErr) { NSLog (@"Can't delete %@: %@", exportFile, deleteErr); } } //[songAsset loadValuesAsynchronouslyForKeys:<#(NSArray *)#> completionHandler:<#^(void)handler#>] NSURL *path_url = [NSURL fileURLWithPath:exportFile]; exporter.outputURL = path_url; [exporter exportAsynchronouslyWithCompletionHandler:^{ int exportStatus = exporter.status; switch (exportStatus) { case AVAssetExportSessionStatusFailed: { // log error to text view NSError *exportError = exporter.error; NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError); break; } case AVAssetExportSessionStatusCompleted: { NSLog (@"AVAssetExportSessionStatusCompleted"); // set up AVPlayer NSData *data = [NSData dataWithContentsOfURL:path_url]; NSLog(@"data is %@",data); break; } case AVAssetExportSessionStatusUnknown: { NSLog (@"AVAssetExportSessionStatusUnknown"); break; } case AVAssetExportSessionStatusExporting: { NSLog (@"AVAssetExportSessionStatusExporting"); break; } case AVAssetExportSessionStatusCancelled: { NSLog (@"AVAssetExportSessionStatusCancelled"); break; } case AVAssetExportSessionStatusWaiting: { NSLog (@"AVAssetExportSessionStatusWaiting"); break; } default: { NSLog (@"didn't get export status"); break; } } }]; [song_object release]; [mediaPicker dismissModalViewControllerAnimated:YES]; }