关于音频文件的操作
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];
}

浙公网安备 33010602011771号