2011-06-08 16 views
5

iPhone'da video uygulaması için uygulama oluşturuyorum, ancak iPhone'da nasıl video çekileceğini bilmiyorum; ve bunları SQLite veritabanında saklamak istiyorum ama bir sorunum var: Doğrudan videoyu SQLite veritabanına kaydedebilir miyim? Mümkün mü, yoksa video yolunu mu kaydetmem gerekiyor? SQLite veritabanında yol kaydetmem gerekirse, bunu nasıl yapabilirim? Lütfen bu problemde yardımcı olun.iPhone'da video yakalama

cevap

16

Sadece iPhone 3GS ve üzeri video kayıtlarını destekliyor.Öncelikle kaydın desteklenip desteklenmediğini kontrol etmeli ve ardından aşağıdaki kodu kullanarak, özellikler için ayarlanmış istenen değerlere sahip kamerayı başlatmalısınız.
Bu kodu çalıştırmak için "MobileCoreServices/MobileCoreServices.h" olacaktır.

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

Sonra SQL yakalanan video.Storing video yolu kaydetmek için aşağıdaki temsilci yöntemi uygulamalıdır/CoreData bunun içindeki tüm video dosyasını depolamak ideal olacaktır.

-(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. 
} 
} 

Bu yardımcı olur umarım.

+0

Bunun için teşekkürler ... bunun için hangi çerçevelere ihtiyacınız var? – TommyG

3

Video verilerini sqlite'de ham veri olarak saklayabilirsiniz. ANCAK BUNU ÖNLEMEKTEN ÖNEMLİDİR. Performans berbat olur. Videoyu belgeler dizinine ve DB'deki yoluna kaydetmek daha iyidir.

o zaman CoreData bakmak gerekir sqlite ile çalışıyorsanız, çok daha kolay yönetmek kalıcılığını yapar ... güzel bir depolama hizmeti sarmalayıcı içerdiğinden ... benim çekirdek veri öğretici kaynak kodunu indirmek tutorial here

İlgili konular