2009-09-04 14 views
10

Estoy escribiendo una aplicación de carga de videos simple en iPhone 3GS donde primero dirijo al usuario al álbum de fotos, y luego selecciono el video para compartir o cargar. Estoy utilizando el UIImagePickerController de la siguiente manera:UIImagePickerController para la película de película Artículo

videoPickerCtrl = [[UIImagePickerController alloc] init]; 
videoPickerCtrl.delegate = self; 
videoPickerCtrl.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
videoPickerCtrl.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:videoPickerCtrl.sourceType]; 

videoPickerCtrl.allowsImageEditing = NO; 
videoPickerCtrl.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; 
[window addSubview:videoPickerCtrl.view]; 

Pero puedo ver que una vez que se invoca el controlador, hay una interfaz de recorte de vídeo inquietante que se presenta. Una vez que presiono "elegir", el video siempre se recorta sin importar si toco los controles de recorte o no. ¿Hay alguna forma de evitar esta interfaz de recorte y obtener directamente la ruta del archivo de video?

+0

permite la propiedad de edición de imágenes Obsoleto en iOS 3.1 – kamleshwar

+0

simplemente lleva tiempo copiar el archivo en el directorio tmp de la zona de pruebas de la aplicación. no se le proporciona el archivo original, solo una copia ... de modo que la barra de progreso es el sistema operativo que copia el archivo. – n3wscott

Respuesta

2

Debe establecer allowsEditing = NO; en lugar de allowsImageEditing = NO; (que ha quedado obsoleto en 3.1). Entonces, la interfaz de recorte no debería aparecer a menos que la película seleccionada tenga más de 10 minutos (de los documentos: "La duración máxima de la película es de 10 minutos." Si un usuario elige una película que dura más de 10 minutos, se ven obligados a recortar antes de guardarlo ").

1

Ok, así que lo tengo funcionando hace mucho tiempo después de mirar cuidadosamente los documentos SDK. Puedo obtener videos del directorio Camera Roll en mi 3GS. Pero no puedo encontrar ninguna forma de que UIImagePickerController pueda elegir videos de otros directorios que no sean Camera Roll (por ejemplo, la Biblioteca de fotos del dispositivo donde el usuario sincroniza los videos a través de iTunes). ¿Hay alguna forma estándar en SDK para hacer eso?

+0

Esto no es una respuesta. – memmons

+0

sabemos que está bien? – humblePilgrim

2

Problema interesante. Esto es solo para información si alguien más está mirando esto. En iPad OS 3.2 he encontrado algunos problemas para recuperar videos, aunque el selector funciona y puedo seleccionar videos de álbumes y no solo del rollo de la cámara.

Aquí está mi código de trabajo de fragmentación

La llamada

NSArray *mediaTypesAllowed = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
    [picker setMediaTypes:mediaTypesAllowed]; 

    picker.delegate = self; 
    picker.allowsEditing = NO; 
    picker.wantsFullScreenLayout = YES; 
    if(!IsEmpty(self.editBackgroundPopover)){ 
     [self.editBackgroundPopover setContentViewController:picker animated:YES]; 
    } 

Y aquí es el método delegado

imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [self.editBackgroundPopover dismissPopoverAnimated:true]; 

NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 

    //not production code, do not use hard coded string in real app 
    if ([ mediaType isEqualToString:@"public.image" ]) {                           
     NSLog(@"Picked a photo"); 
    } 
    //not production code, do not use hard coded string in real app 
    else if ([ mediaType isEqualToString:@"public.movie" ]){ 
     NSLog(@"Picked a movie at URL %@", [info objectForKey:UIImagePickerControllerMediaURL]); 
     NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL]; 
     NSLog(@"> %@", [url absoluteString]); 
    } 

    [[picker self] dismissModalViewControllerAnimated:YES]; 
} 

Sin embargo la URL de vídeo que puedo recuperar el selector tiene la forma

file:/lo calhost/private/var/mobile/Applications/C6FAC491-D27D-45A6-B805-951727ED2CEC/tmp/-Tmp-/trim.KOzqps.MOV

Así que parece a mí que el vídeo podría estar siendo procesado a través el código de recorte, incluso si estoy seleccionando el video como un todo. Tenga en cuenta también que la película, originalmente de tipo m4v cuando la cargué a través de iTunes es de tipo MOV, que por supuesto no se puede reproducir en el dispositivo. Intenté reproducir la URL, pero recibí una alerta que decía "Este tipo de película no se puede reproducir"

No entiendo muy bien qué está jugando Apple aquí, la API parece no ser realmente utilizable como forma de cargar y reproducir video desde la biblioteca de fotos.

Afortunadamente IOS 4 será más accesible, pero para mi aplicación para iPad, todavía faltan algunos meses.

+0

problemas no fueron resueltos por iOS 4.2. Todavía los estoy viendo.¿Has descubierto alguna forma de hacer que esto funcione? – SpaceDog

+0

Hola chicos, ¿hay alguna solución para esto? –

Cuestiones relacionadas