当没有足够的磁盘空间时,我试图阻止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.4MB的空间。为什么它不返回false?

最佳答案

AVCaptureOutput头文件,在minFreeDiskSpaceLimit上:
指定在给定卷上继续录制所需的最小可用空间量(字节)。
通过captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:委托方法报告错误。
因此,minFreeDiskSpaceLimit定义了继续记录的条件,并且通过finish delegate方法报告错误,这一事实告诉我,必须首先启动捕获会话才能使用它。

关于ios - AVCaptureMovieFileOutput minFreeDiskSpaceLimit不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34694879/

10-12 21:28