1

我正在尝试将捕获的帧记录为视频,同时同时对帧执行图像处理任务。

我有一个 AVCaptureSession,我添加了两个单独的输出到 -

  1. AVCaptureVideoData输出
  2. AVCaptureMovieFile输出

我确认了AVCaptureVideoDataOutputSampleBufferDelegateAVCaptureFileOutputRecordingDelegate

captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) 用于帧捕获和分析以及func fileOutput(_ output: AVCaptureFileOutput, didStartRecordingTo fileURL: URL, from connections: [AVCaptureConnection])视频录制

出于某种原因,每种方法都单独工作,但是当我添加两个输出时,只有视频录制工作并且根本不调用“captureOutput”函数。

任何想法为什么会发生这种情况,我做错了什么?或者在设置和配置会话时我应该确保什么?

4

2 回答 2

2

这两个( AVCaptureVideoDataOutput, AVCaptureMovieFileOutput) 不能相互配合。您可以使用captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection)获取帧进行分析和记录。你可以在这里找到示例代码

于 2019-11-18T08:01:10.757 回答
0

您可以使用 AVCaptureVideoDataOutput 和 AVAssetWriter 来实现您所需要的。我在https://github.com/gwh111/CoreMLRecord有一个演示

希望它有所帮助。

于 2020-01-03T03:22:04.777 回答