AVCaptureMovieFileOutput minFreeDiskSpaceLimit无效

时间:2016-01-09 14:47:49

标签: ios swift avfoundation avcapturesession

我正在尝试阻止AVCaptureSession在没有足够的磁盘空间时添加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'函数总是返回true。我正在真实设备上测试它,只剩下69.4 MB的空间。为什么不返回假?

1 个答案:

答案 0 :(得分:0)

来自dlsym()标题文件,AVCaptureOutput

  

指定在给定卷上继续录制所需的最小可用空间量(以字节为单位)。

通过minFreeDiskSpaceLimit委托方法报告错误。

因此,captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:定义了继续记录的条件,并且通过完成委托方法报告错误这一事实向我建议您必须首先启动捕获会话才能使用它。