2011-06-08 16 views
5

Estoy creando aplicaciones para aplicaciones de video en iPhone, pero no sé cómo capturar un video en iPhone; y quiero almacenarlos en la base de datos SQLite, pero tengo un problema: ¿puedo guardar video directo en la base de datos SQLite? ¿Es posible, o tengo que guardar la ruta del video? Si tengo que guardar la ruta en la base de datos SQLite, ¿cómo puedo hacer esto? Por favor ayuda en este problema.cómo capturar video en iPhone

Respuesta

16

Solo iPhone 3GS y superior admiten grabación de video. Por lo tanto, primero debe verificar si la grabación es compatible y luego iniciar la cámara con los valores deseados establecidos para las propiedades, usando el siguiente código.
Tendrás "MobileCoreServices/MobileCoreServices.h" para ejecutar este código.

  if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {    
       UIImagePickerController *videoRecorder = [[UIImagePickerController alloc]init];   
       NSArray *sourceTypes = [UIImagePickerController availableMediaTypesForSourceType:videoRecorder.sourceType]; 
       NSLog(@"Available types for source as camera = %@", sourceTypes); 
       if (![sourceTypes containsObject:(NSString*)kUTTypeMovie]) { 
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil 
                    message:@"Device Not Supported for video Recording."                  delegate:self 
                  cancelButtonTitle:@"Yes" 
                  otherButtonTitles:@"No",nil]; 
        [alert show]; 
        [alert release]; 
        return; 
       } 
       videoRecorder.sourceType = UIImagePickerControllerSourceTypeCamera; 
       videoRecorder.mediaTypes = [NSArray arrayWithObject:(NSString*)kUTTypeMovie];   
       videoRecorder.videoQuality = UIImagePickerControllerQualityTypeLow; 
       videoRecorder.videoMaximumDuration = 120; 
       videoRecorder.delegate = self; 
       self.recorder_ = videoRecorder;     
       [videoRecorder release]; 
       [self presentModalViewController:self.recorder_ animated:YES];     
      } 

A continuación, se debe implementar siguiente método delegado para guardar la ruta de vídeo video.Storing capturado en SQL/coredata sería ideal en lugar de almacenar todo el archivo de vídeo en ella.

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
NSString *type = [info objectForKey:UIImagePickerControllerMediaType]; 
if ([type isEqualToString:(NSString *)kUTTypeVideo] || 
    [type isEqualToString:(NSString *)kUTTypeMovie]) { // movie != video 
    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; 
    NSData *videoData = [NSData dataWithContentsOfURL:videoUrl]; 
    NSString *videoStoragePath;//Set your video storage path to this variable 
    [videoData writeToFile:videoStoragePath atomically:YES]; 
    //You can store the path of the saved video file in sqlite/coredata here. 
} 
} 

Espero que esto ayude.

+0

Gracias por esto ... ¿qué marcos necesitas para esto? – TommyG

3

Sería capaz de almacenar los datos de video en sqlite como datos sin procesar PERO yo recomendaría enfáticamente CONTRA esto. El rendimiento sería horrible. Mejor guardar el video en el directorio de documentos y luego una ruta a eso en el DB.

Si está trabajando con sqlite entonces usted debe buscar en CoreData, que hace que la gestión de persistencia mucho más fácil ... descargar el código fuente de mi tutorial de datos básicos, ya que contiene un bonito envoltorio servicio de almacenamiento ... tutorial here

Cuestiones relacionadas