0

当我手动停止录制视频时,使用stopRecording()的实例的方法AVCaptureMovieFileOutput,它将调用fileOutput(_:didFinishRecordingTo:from:error:)的委托方法AVCaptureFileOutputRecordingDelegate。但是当我使用自动停止视频时maxRecordedDurationcaptureOutput(captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:)将调用委托方法,我在 developer.apple.com 网站上找不到此方法文档。

还有另一种方法capture(_:didFinishRecordingToOutputFileAt:fromConnections:error:)

AVCaptureFileOutputRecordingDelegate文档上只有fileOutput方法,没有任何关于captureOutputcapture方法的内容。

是否有一种方法可以处理其中的输出文件并在任何情况下都会被调用?这样我就可以用一种方法处理输出。

4

1 回答 1

0

我不确定它可能是 swift-api 翻译错误。一些 AVFoundation API 有奇怪的 obj-c 来快速 api 分配。

从头文件 AVCaptureFileOutputRecordingDelegate 有:

- (void)captureOutput:(AVCaptureFileOutput *)output didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray<AVCaptureConnection *> *)connections error:(nullable NSError *)error;

Swift api 对应的是:

func fileOutput(_ output: AVCaptureFileOutput, 
       didFinishRecordingTo outputFileURL: URL, 
       from connections: [AVCaptureConnection], 
      error: Error?)

我注意到两者都与您的评论不同。SDK 更新时可能会发生 Swift api 更正。如果是 SDK 错误,我建议您检查 SDK 目录。

于 2018-06-20T23:01:00.547 回答