2011-06-08 80 views
5

我正在爲iPhone中的視頻應用程序創建應用程序,但我不知道如何在iPhone中捕捉視頻;我想將它們存儲在SQLite數據庫中,但我有一個問題:我可以將直接視頻保存在SQLite數據庫中嗎?是可能的,或者我必須存儲視頻路徑?如果我必須在SQLite數據庫中保存路徑,那我該怎麼做?請幫助解決這個問題。如何在iPhone中捕捉視頻

回答

16

只有iPhone 3GS及以上版本支持視頻錄製。因此,您應該首先檢查是否支持錄製,然後使用以下代碼啓動具有爲屬性設置的所需值的攝像機。
您將擁有「MobileCoreServices/MobileCoreServices.h」來運行此代碼。

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

那麼你應該實現以下的委託方法保存在SQL捕獲的video.Storing視頻路徑/ coredata將是理想的,而不是存儲整個視頻文件在裏面。

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

希望這會有所幫助。

+0

感謝您對此有什麼框架? – TommyG 2012-03-26 14:04:04

3

您將能夠將視頻數據作爲原始數據存儲在sqlite中,但我強烈建議不要這樣做。表現會很糟糕。最好將視頻保存到文檔目錄,然後將其保存到數據庫中。

如果您使用SQLite的工作,那麼你應該看看CoreData,這使得管理持久性容易得多...下載的源代碼,我的核心數據教程,因爲它包含了一個很好的存儲服務包裝... tutorial here