2011-01-20 16 views

答えて

2

私はオーディオのテーブルビューをクリックしたときに私は、私は、「アップロード」することで、アップロード

-(void)startVideoStart:(NSNumber*)number 

{ 

    MPMediaItem *song = [miPodSongsArray objectAtIndex:[number intValue]]; 

    songTitle = [song valueForProperty: MPMediaItemPropertyTitle]; 

    NSURL *url = [song valueForProperty:MPMediaItemPropertyAssetURL]; 

    [NSThread detachNewThreadSelector:@selector(loadAudioInBackground:) toTarget:self withObject:url]; 

    [self performSelector:@selector(UploadSong:) withObject:songDict afterDelay:10]; 

} 

-(void)loadAudioInBackground:(NSURL*)url 

{ 

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; 

    NSLog(@"%@",url); 

    AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL: url options:nil]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSLog (@"compatible presets for songAsset: %@",[AVAssetExportSession exportPresetsCompatibleWithAsset:songAsset]); 

    AVAssetExportSession *exporter = [[AVAssetExportSession alloc] 
            initWithAsset: songAsset 
            presetName: AVAssetExportPresetPassthrough]; 

    NSLog (@"created exporter. supportedFileTypes: %@", exporter.supportedFileTypes); 

    exporter.outputFileType = @"com.apple.m4a-audio"; 

    NSString *exportFile = [documentsDirectory stringByAppendingPathComponent: @"item.m4a"]; 

    NSError *error1; 

    if([[NSFileManager defaultManager] fileExistsAtPath:exportFile]) 
    { 

     [[NSFileManager defaultManager] removeItemAtPath:exportFile error:&error1]; 
    } 

    NSURL* exportURL = [[NSURL fileURLWithPath:exportFile] retain]; 

    exporter.outputURL = exportURL; 

    // do the export 
    [exporter exportAsynchronouslyWithCompletionHandler:^{ 

     NSData *data1 = [NSData dataWithContentsOfFile: [documentsDirectory stringByAppendingPathComponent: @"item.m4a"]]; 

     //NSLog(@"%@",data1); 

     if (songDict) { 

      [songDict release]; 

      songDict=nil; 

     } 

     songDict= [[NSMutableDictionary alloc]init]; 

     [songDict setValue:data1 forKey:@"AudioData"]; 

     [songDict setValue:songTitle forKey:@"AudioName"]; 

     [songDict setValue:[[mAppDelegate.userInfoArray objectAtIndex:1]valueForKey:@"user_id"] forKey:@"user_id"]; 

     //NSLog(@"%@",infoDict); 

     mAppDelegate.uploadType = @"Audio"; 

     int exportStatus = exporter.status; 

     switch (exportStatus) { 

      case AVAssetExportSessionStatusFailed: { 

       // log error to text view 
       NSError *exportError = exporter.error; 

       NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError); 

       //  errorView.text = exportError ? [exportError description] : @"Unknown failure"; 

       //errorView.hidden = NO; 

       break; 
      } 

      case AVAssetExportSessionStatusCompleted: { 

       NSLog (@"AVAssetExportSessionStatusCompleted"); 

       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; } } 

    }]; 

    [pool release]; 
} 
+0

ためのNSDataに保持している曲は、あなたがiPhoneアプリで音楽ファイルを保存する意味しましたか?テーブルビュー上のオーディオリストを表示 – meetpd

+0

はいドキュメントディレクトリ – GhostRider

+0

に保存することができます。AVAssetExportSessionとmAppDelegateをどこに宣言するのですか – ios

関連する問題