我正在开展一个需要管理视频的项目。我需要重命名或删除视频。为此,我们需要在NSDATA中保存视频然后进行管理。 但由于下面的语句中的内存错误,我收到一条错误消息,因为已终止。
已修改
NSData *data=[NSData dataWithContentsOfFile:self.path];
if (data){
BOOL success = [data writeToFile:videopath atomically:NO];
}
self.path包含视频文件的路径。它适用于小尺寸视频(4-10分钟)但它在大尺寸视频中崩溃(大于20-30分钟)。
请建议。
答案 0 :(得分:2)
使用此代码而不是将视频文件加载到内存中,您的代码将使用小文件,但是您将使用大文件失败。
if ( [[NSFileManager defaultManager] isReadableFileAtPath:source] ){
[[NSFileManager defaultManager] copyItemAtURL:source toURL:destination error:nil];}
答案 1 :(得分:0)
您将整个视频维护为应用程序内的NSData
。不要将视频文件用作NSData
,而是将视频复制到某个位置(例如NSTempoaryDirectoy)。您可以删除或重命名旧视频。
答案 2 :(得分:0)
我不确定你的要求是什么。根据您的问题,我了解您需要重命名视频文件。对于重命名,为什么我们需要将其作为NSdata读取并再次编写相同的内容。重命名请尝试下面的代码。
NSFileManager *filemanager = [NSFileManager defaultManager];
if ([filemanager fileExistsAtPath:filePath])
{
NSString *target = [[filePath stringByDeletingLastPathComponent] stringByAppendingPathComponent:newnameofthefile];
[filemanager moveItemAtPath:filePath toPath:target error:nil];
}
我希望这对你有帮助..