En mi aplicación, debo seleccionar cualquier archivo de video y mostrar la URL de un archivo de video en la aplicación.Cómo seleccionar un archivo de video o película de UIImagePickerController
-(void)viewDidLoad{
[super viewDidLoad];
self.imgPicker = [[UIImagePickerController alloc] init];
self.imgPicker.delegate = self;
self.imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
self.imgPicker.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeMovie, (NSString *)kUTTypeImage, nil];
self.imgPicker.allowsEditing = NO;
[self presentModalViewController:self.imgPicker animated:YES];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[picker dismissModalViewControllerAnimated:YES];
}
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage : (UIImage *)image
editingInfo:(NSDictionary *)editingInfo{
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
value = 1;
IMAGE_COUNTER = IMAGE_COUNTER + 1;
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.movie" ])
{
NSLog(@"Picked a movie at URL %@", [info objectForKey:UIImagePickerControllerMediaURL]);
NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL];
NSLog(@"> %@", [url absoluteString]);
}
else
{
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSData* imageData = UIImageJPEGRepresentation(image, 1.0);
NSString* incrementedImgStr = [NSString stringWithFormat: @"UserCustomPotraitPic%d.jpg", IMAGE_COUNTER];
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* fullPathToFile2 = [documentsDirectory stringByAppendingPathComponent:incrementedImgStr];
[imageData writeToFile:fullPathToFile2 atomically:NO];
}
}
He utilizado el código anterior para mostrar la imagen y de vídeo, cada cosa viene bien, sin embargo cuando seleccione cualquier archivo de vídeo, no se trata de UIImagePickerController Delegado Método, archivo de vídeo juega directamente, i don 't desea reproducir cualquier archivo de vídeo, cuando seleccione cualquier archivo de vídeo que debe entrar en su propiedad delegado
Si usa ARC, puede comparar el tipo de medio con más facilidad. if ([mediaType isEqualToString: (__ bridge NSString *) kUTTypeMovie]) { – averydev
También puede usar azúcar sintáctica para crear una matriz como esta: 'imagePicker.mediaTypes = @ [(NSString *) kUTTypeMovie, (NSString *) kUTTypeImage];' (etc., agregue tipos como desee). Misma funcionalidad, solo un poco menos tipeando.:) – Olie
Gran respuesta :). Encontré eso al establecer picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; saqué solo una lista de videos y descubrí que era más útil para lo que buscaba. Tenga en cuenta que los diferentes tipos de fuente mostrarán menús diferentes (para mí, usando UIImagePickerControllerSourceTypePhotoLibrary subió mis álbumes de fotos pero luego los mostró vacíos de video) –