如果iphone的存储空间即将满了,如何停止视频录制?

时间:2016-06-24 17:16:11

标签: ios avfoundation avcapturesession avassetwriter

有一种方法可以在录制视频时,如果设备存储空间几乎已满,我会收到通知。

我发现你可以设置maxRecordedFileSize   如果我使用AVCaptureMovieFileOutput录制的,但不幸的是我无法使用它,因为在视频帧存储在视频文件中之前我必须进行一些视频处理。

相反,我必须使用AVCaptureVideoDataOutputAVAssetWriter的方法。

是否可以观察存储已满时通知的某种系统通知?

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码获取磁盘中的可用空间

-(uint64_t)getFreeDiskspace{
    uint64_t totalSpace = 0.0f;
    uint64_t totalFreeSpace = 0.0f;
    NSError *error = nil;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];

    if (dictionary) {
        NSNumber *fileSystemSizeInBytes = [dictionary objectForKey: NSFileSystemSize];
        NSNumber *freeFileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
        totalSpace = [fileSystemSizeInBytes floatValue];
        totalFreeSpace = [freeFileSystemSizeInBytes floatValue];
        NSLog(@"Memory Capacity of %llu MiB with %llu MiB Free memory available.", ((totalSpace/1024ll)/1024ll), ((totalFreeSpace/1024ll)/1024ll));
    } else {
        NSLog(@"Error Obtaining System Memory Info: Domain = %@, Code = %@", [error domain], [error description]);
    }

    return totalFreeSpace;
}

你可以查看

if([self getFreeDiskspace]>100.0){
  //The store 
}else{
  //Alert user
}

希望它有所帮助。