2013-02-20 11 views
9

Próbuję zapisać wideo z niestandardowymi metadanymi właściwymi dla mojej aplikacji i próbującymi ją odzyskać, gdy użytkownik wybierze ten film z biblioteki. Nie jestem pewien, czy zapisuję metadane poprawnie, ponieważ nie widzę niczego, gdy próbuję odzyskać metadane. Nie jestem również pewien, czy poprawnie odczytuję metadane. Jestem nowy na iOS, każda pomoc jest doceniana. Przeszukałem wiele wątków i bibliotekę programistów, ale nie mogłem tego uruchomić.Jak dodać i pobrać niestandardowe dane meta do pliku wideo w programie iOS?

Próbuję zapisać metadane w funkcji delegata recordingDidFinishToOutputFileURL. Film jest zapisywany w bibliotece.

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

Próbuję pobrać film w funkcji delegata didFinishPickingMediaWithInfo sprawdzić metadane, ale nie mógł nic widzieć w funkcji 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

Czy jesteś w stanie zapisać plik na zwykłym komputerze, aby obejrzeć tam metadane? – Liron

+0

dlaczego próbujesz dodać metadane, zamiast tworzyć nowy folder w bibliotece zdjęć? więc możesz zapisać i pobrać filmy/zdjęcia, które pasują do Twojej aplikacji? – iremk

+0

Obsługuje tylko typ pliku mov? nie mp4 – crossle

Odpowiedz

0

sprawdzić błędy. Eksportujesz do miejsca, w którym plik już istnieje, więc eksportuje się do niego, co nie zadziała. Po prostu wyeksportuj do innej lokalizacji

Powiązane problemy