如何将从摄像头拍摄的视频保存到iPhone中的SQLite数据库?

时间:2011-06-03 06:33:49

标签: iphone objective-c sqlite camera

我有一个应用程序,其中有一个名为video的按钮。当用户点击按钮时,将打开一个新视图,其中包含4个其他按钮,即拍摄视频和浏览视频。

当他点击拍摄视频时,相机会打开,这样他就可以拍摄视频并将视频插入到视图中。这一切都已完成,但是当用户拍摄视频并且视频插入视图时会出现问题。名为add的视图上有一个按钮,允许将视频插入SQLite数据库。

我遇到了如何绑定视频以及如何将捕获的视频插入SQLite数据库的问题。

2 个答案:

答案 0 :(得分:1)

我不确定您为什么要将包含捕获的视频的二进制数据保存到数据库中。在DB最佳实践中,这不是一个好主意。我建议将您的视频保存到主文件夹目录中,并将视频命名为可以绑定到数据库中的内容。

例如,用户录制了一个新视频,在数据库中你创建了一个新的记录并且你得到了id,比如说ID 10,所以你应该将视频保存到像10.mp4这样的主目录中

因此,您可以稍后根据相同的ID值检索您的视频。

:)

答案 1 :(得分:0)

试图将Roberto的建议放在代码中:

1)生成一个唯一的Id(由时间戳/ hash / CFUUIDCreate生成......)。

CFStringRef uStr =  CFUUIDCreateString(kCFAllocatorDefault,CFUUIDCreate(kCFAllocatorDefault));  
NSString *uniqueId = [[NSString alloc] initWithString:uStr];  

2)使用此唯一名称保存文件。现在将uniqueId保存在SQLite DB中。

NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];  
NSString *filePath = [docsDir sstringByAppendingPathComponent:uniqueId];  
NSFileManager *fManager = [NSFileManager defaultManager];   
if (![fManager fileExistsAtPath:fileDirPath])   
{   
    // save the file   
}

3)为了从uniqueId获取视频,尝试从中构建文件路径,

NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [docsDir sstringByAppendingPathComponent:uniqueId];
NSFileManager *fManager = [NSFileManager defaultManager];  
if ([fManager fileExistsAtPath:fileDirPath])   
{   
    // access the file   
}