2013-02-20 21 views
9

Sto provando a salvare video con metadati personalizzati pertinenti per la mia app e cerco di recuperarli quando l'utente seleziona quel video dalla libreria. Non sono sicuro di salvare i metadati, dato che non riesco a vedere nulla quando provo a recuperare i metadati. Non sono nemmeno sicuro se sto recuperando i metadati correttamente. Sono nuovo di iOS, ogni aiuto è apprezzato. Ho cercato molti thread e la libreria degli sviluppatori ma non ho potuto farlo funzionare.Come aggiungere e recuperare metadati personalizzati in un file video nella programmazione iOS?

Sto tentando di salvare i metadati nella funzione di delega recordingDidFinishToOutputFileURL. Il video viene salvato nella libreria.

NSMutableArray *metadata = [NSMutableArray array]; 
    AVMutableMetadataItem *mi = [AVMutableMetadataItem metadataItem]; 
    mi.key = AVMetadataCommonKeyTitle; 
    mi.keySpace = AVMetadataKeySpaceCommon; 
    mi.value = @"title"; 
    [metadata addObject:mi]; 

    NSLog(@"Output saving:%@",outputFileURL); 
    AVAsset *video = [AVAsset assetWithURL:outputFileURL]; 
    AVAssetExportSession *exportSession = [AVAssetExportSession  exportSessionWithAsset:video presetName:AVAssetExportPresetPassthrough]; 
    exportSession.shouldOptimizeForNetworkUse = YES; 
    exportSession.outputFileType = AVFileTypeMPEG4; 
    exportSession.metadata = metadata; 
    exportSession.outputURL = outputFileURL; 
    [exportSession exportAsynchronouslyWithCompletionHandler:^{ 
     NSLog(@"done processing video!"); 
     UISaveVideoAtPathToSavedPhotosAlbum(outputFileURL.path, self, @selector(video:didFinishSavingWithError: contextInfo:), nil); 
    }]; 

sto cercando di recuperare il video in funzione di delegato didFinishPickingMediaWithInfo per controllare i metadati, ma non in grado di vedere nulla nella funzione completionhandler

 if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) { 
     video_selected = TRUE; 
     NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; 

     NSLog(@"video has %@", videoURL.path); 
     AVAsset *videoAsset = [AVAsset assetWithURL:videoURL]; 
     NSLog(@"Loading metadata..."); 
     NSArray *keys = [[NSArray alloc] initWithObjects:@"commonMetadata", nil]; 
     NSMutableArray *metadata = [[NSMutableArray alloc] init]; 
     [videoAsset loadValuesAsynchronouslyForKeys:keys completionHandler:^{ 

      [metadata removeAllObjects]; 
      for (NSString *format in [videoAsset availableMetadataFormats]) 
      { 
       [metadata addObjectsFromArray:[videoAsset metadataForFormat:format]]; 
       NSLog(@"Printing metadata-%@",metadata); 
      } 


     }]; 
+0

Sei in grado di salvare il file su un normale computer per vedere i metadati lì? – Liron

+0

perché stai provando ad aggiungere metadati invece di creare una nuova cartella nella tua libreria di foto? in modo che tu possa salvare e recuperare i video/le foto rilevanti per la tua app? – iremk

+0

Supporta solo il tipo di file mov? non mp4 – crossle

risposta

0

controllare i vostri errori. Esporti a dove il file esiste già, quindi esporta in sé stesso che non funzionerà. Esportare semplicemente in un'altra posizione

Problemi correlati