我从摄像机中提取视频,然后用下面的代码保存到本地目录
NSURL *selectedVideoURL = info[UIImagePickerControllerMediaURL];
NSData *videoData = [NSData dataWithContentsOfURL:selectedVideoURL];
NSString *filePath = [UICommonMethods getSaveVideoPath];
[videoData writeToFile:filePath atomically:YES];但问题是,当我录制5-10 mnts视频时,应用程序因内存泄漏而崩溃。任何人都知道我们如何控制记忆,但请记住,我是从相机中,而不是从图书馆挑选视频。
发布于 2014-09-02 10:13:55
当您使用图像选择器创建视频时,它会创建一个临时视频文件。您可以将该文件移动到需要它的位置,而不是将其加载到内存中(反正这很糟糕),然后复制它:
// Get paths
NSURL *selectedVideoURL = info[UIImagePickerControllerMediaURL];
NSString *filePath = [UICommonMethods getSaveVideoPath];
NSURL* fileUrl = [NSURL fileURLWithPath:filePath];
// Move file
[[NSFileManager defaultManager] moveItemAtURL:selectedVideoURL toURL:fileUrl error:nil];如果您需要访问该文件的数据,请使用NSFileHandle一次读取它一点,而不是一次全部读取.
发布于 2014-09-02 08:41:49
NSData *videoData = [NSData dataWithContentsOfURL:selectedVideoURL];以上类方法中,videoData不能直接发布,请尝试如下:
NSData *videoData = [[NSData alloc] initWithContentsOfURL: selectedVideoURL];//做点什么。
[videoData release];
videoData = nil;https://stackoverflow.com/questions/25618034
复制相似问题