ubicacion - ¿Cómo agregar y recuperar metadatos personalizados a un archivo de video en la programación de iOS?
renombrar fotos iphone 7 (1)
revisa tus errores Está exportando a donde ya existe el archivo, por lo que se está exportando a sí mismo y no funcionará. Solo exporta a una ubicación diferente
Intento guardar videos con metadatos personalizados relevantes para mi aplicación e intentar recuperarlos cuando el usuario selecciona ese video de la biblioteca. No estoy seguro de si estoy guardando los metadatos ya que no puedo ver nada cuando trato de recuperar los metadatos. Tampoco estoy seguro de si estoy recuperando los metadatos correctamente. Soy nuevo en iOS, cualquier ayuda es apreciada. He buscado muchos hilos y la biblioteca del desarrollador pero no pude hacer que esto funcione.
Intento guardar los metadatos en la función de delegado recordingDidFinishToOutputFileURL. El video se está guardando en la biblioteca.
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);
}];
Intento recuperar el video en la función de delegado didFinishPickingMediaWithInfo para verificar los metadatos pero no puedo ver nada en la función de manejo de complementos
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);
}
}];