gpt4 book ai didi

ios - 使用 AVCaptureMovieFileOutput 立即开始视频录制

转载 作者:行者123 更新时间:2023-11-28 21:02:12 25 4
gpt4 key购买 nike

当我的应用程序启动时,我试图使用 AVCaptureMovieFileOutput 将设备相机录制到视频文件中。令我非常沮丧的是,我无法让它工作:

  • 我可以使用 AVCaptureVideoPreviewLayer 查看视频源,所以我的 session 已正确连接。

  • 它将输出到的文件尚不存在,并且位于可写目录中。

  • API 调用或通过 AVCaptureSessionRuntimeError 通知未返回任何错误。

  • 我的AVCaptureFileOutputRecordingDelegate 方法根本没有被调用。

我一个接一个地尝试示例代码,更令人抓狂的是,其中一些似乎真的有效。

最佳答案

事实证明,你不能像这样立即开始记录到文件中:

let session = AVCaptureSession() 
session.beginConfiguration()
// add inputs, outputs
session.commitConfiguration()
videoFileOutput.startRecording(to: filePath, recordingDelegate: self)

这将默默地失败并且什么都不做!

相反,您需要通过注册 AVCaptureSessionDidStartRunning 通知来等待 session 开始:

NotificationCenter.default.addObserver(self, selector: #selector(sessionDidStartRunning), name: .AVCaptureSessionDidStartRunning, object: session)

您可以按如下方式实现此方法以在 session 开始后立即开始记录到临时文件:

@objc
func sessionDidStartRunning(notification: NSNotification) {
let session = notification.object as! AVCaptureSession
for output in session.outputs {
if let output = output as? AVCaptureMovieFileOutput {
let filePath = URL(fileURLWithPath: NSTemporaryDirectory() + "recording.mov")
try? FileManager.default.removeItem(at: filePath)
output.startRecording(to: filePath, recordingDelegate: self)
}
}
}

关于ios - 使用 AVCaptureMovieFileOutput 立即开始视频录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com