iphoneiphone-sdk-3.0mpmediapickercontrollermpmediaitem

MPMediaItems raw song data


I was wondering how to access an MPMediaItem's raw data.

Any ideas?


Solution

  • you can obtain the media item's data in such way:

    -(void)mediaItemToData
    {
        // Implement in your project the media item picker
    
        MPMediaItem *curItem = musicPlayer.nowPlayingItem;
    
        NSURL *url = [curItem valueForProperty: MPMediaItemPropertyAssetURL];
    
        AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL: url options:nil];
    
        AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset: songAsset
                                           presetName: AVAssetExportPresetPassthrough];
    
        exporter.outputFileType = @"public.mpeg-4";
    
        NSString *exportFile = [[self myDocumentsDirectory] stringByAppendingPathComponent:           
                                                                   @"exported.mp4"];
    
        NSURL *exportURL = [[NSURL fileURLWithPath:exportFile] retain];
        exporter.outputURL = exportURL; 
    
        // do the export
        // (completion handler block omitted) 
        [exporter exportAsynchronouslyWithCompletionHandler:
        ^{
        NSData *data = [NSData dataWithContentsOfFile: [[self myDocumentsDirectory] 
                                         stringByAppendingPathComponent: @"exported.mp4"]];
    
        // Do with data something
    
        }];
    }
    

    This code will work only on ios 4.0 and later

    Good luck!