2013-02-20 3 views
9

Ich versuche, das Video mit benutzerdefinierten Metadaten zu speichern, die für meine App relevant sind, und versuche, sie wiederherzustellen, wenn der Benutzer dieses Video aus der Bibliothek auswählt. Ich bin mir nicht sicher, ob ich die Metadaten richtig speichern kann, da ich beim Abrufen der Metadaten nichts sehen kann. Ich bin mir auch nicht sicher, ob ich die Metadaten korrekt abrufe. Ich bin neu in iOS, jede Hilfe wird geschätzt. Ich habe viele Threads und Entwicklerbibliotheken durchsucht, aber ich konnte das nicht zum Laufen bringen.Wie können benutzerdefinierte Metadaten zu einer Videodatei in der iOS-Programmierung hinzugefügt und abgerufen werden?

Ich versuche, Metadaten in der RecordingDidFinishToOutputFileURL-Delegatfunktion zu speichern. Das Video wird in der Bibliothek gespeichert.

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

Ich versuche, das Video in didFinishPickingMediaWithInfo Delegatfunktion zum Abrufen der Metadaten zu überprüfen, aber nicht in der Lage irgendetwas in der completionhandler Funktion

 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

Können Sie die Datei auf einem normalen Computer speichern, um die Metadaten dort zu sehen? – Liron

+0

Warum versuchen Sie, Metadaten hinzuzufügen, anstatt einen neuen Ordner in Ihrer Fotobibliothek zu erstellen? So können Sie die für Ihre App relevanten Videos/Fotos speichern und abrufen. – iremk

+0

Nur Unterstützung mov Dateityp? nicht mp4 – crossle

Antwort

0

überprüfen Sie Ihre Fehler zu sehen. Sie exportieren dorthin, wo die Datei bereits existiert, also exportiert sie in sich selbst, was nicht funktioniert. Exportieren Sie einfach an einen anderen Ort

Verwandte Themen