2013-02-20 14 views
9

Uygulamamla ilgili özel meta verilerle video kaydetmeye ve kullanıcı bu videoyu kitaplıktan seçtiğinde almaya çalışıyorum. Meta verileri almayı denediğimde hiçbir şeyi göremediğimden meta verileri doğru kaydettirdiğimden emin değilim. Meta veriyi doğru şekilde aldığımdan emin değilim. IOS için yeniyim, herhangi bir yardım takdir ediliyor. Birçok iş parçacığı ve geliştirici kitaplığı aradım ancak bunu işe alamadım.iOS programında bir video dosyasına nasıl özel meta veriler eklenir ve alınır?

MetaVeriyi recordingDidFinishToOutputFileURL temsilci işlevine kaydetmeye çalışıyorum. Video kütüphanede saklanıyor.

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

Ben meta kontrol etmek didFinishPickingMediaWithInfo temsilci işlevi videoyu alınmaya çalışılırken ancak hataları kontrol completionhandler fonksiyonu

 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

Meta verileri oraya bakmak için dosyayı normal bir bilgisayara kaydedebiliyor musunuz? – Liron

+0

Fotoğraf kitaplığınızda yeni bir klasör oluşturmak yerine neden meta veri eklemeye çalışıyorsunuz? Böylece uygulamanızla alakalı videoları/fotoğrafları kaydedebilir ve alabilirsiniz? – iremk

+0

Yalnızca mov dosya türünü destekliyor musunuz? mp4 değil – crossle

cevap

0

şey görmek mümkün değil. Dosyanın zaten bulunduğu yere dışa aktarılıyorsunuz, bu yüzden işe yaramayacak şekilde kendi kendine dışa aktarılıyor. Sadece farklı bir konuma dışa aktarma

İlgili konular