AVCaptureMovieFileOutput minFreeDiskSpaceLimit 不工作

AVCaptureMovieFileOutput minFreeDiskSpaceLimit not working

我试图阻止 AVCaptureSession 在没有足够磁盘 space 时添加 AVCaptureMovieFileOutput。我在 viewDidload 中使用以下代码进行测试:

let session = AVCaptureSession()
session.sessionPreset = AVCaptureSessionPresetHigh

let movieFileOutput = AVCaptureMovieFileOutput()
movieFileOutput.minFreeDiskSpaceLimit = 1024 * 1024 * 100 // 100 MB
movieFileOutput.maxRecordedDuration = CMTimeMakeWithSeconds(45, Int32(NSEC_PER_SEC)) // 45 sec

if (session.canAddOutput(movieFileOutput)) {
    print("Output added")
    session.addOutput(movieFileOutput)
} else {
    print("Not enough disk space??")
}

但是函数 'canAddOutput' 总是 returns 为真。我正在真实设备上对其进行测试,只剩下 69.4 MB space。为什么不返回 false?

来自 AVCaptureOutput 头文件,在 minFreeDiskSpaceLimit:

Specifies the minimum amount of free space, in bytes, required for recording to continue on a given volume.

错误是通过 captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error: 委托方法报告的。

因此 minFreeDiskSpaceLimit 定义了 continued 记录的条件并且通过完成委托方法报告了错误这一事实向我表明您必须首先开始捕获会话使用它。