【问题标题】:Called Delegate Method after Stopping Recording Video停止录制视频后调用委托方法
【发布时间】:2018-06-20 07:11:10
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: swift avcapture avcapturemoviefileoutput


    【解决方案1】:

    我不确定它可能是 swift-api 翻译错误。一些 AVFoundation API 有奇怪的 obj-c 到 swift 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 目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      相关资源
      最近更新 更多