【问题标题】:AVCaptureSession video stabilization lagAVCaptureSession 视频稳定滞后
【发布时间】:2019-03-15 21:21:45
【问题描述】:

之前我在我的AVCaptureSession 中添加了一个AVCaptureMovieFileOutput 并启用了电影preferredVideoStabilizationMode,收到了很好的预期结果。

我刚刚切换到AVCaptureVideoDataOutput,电影稳定导致非常明显的延迟——在图像预览更新之前大约有整整一秒的延迟。

设置:

//  Video data output
let outputSettings: [String: Any] = [kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_32BGRA]
videoDataOutput = AVCaptureVideoDataOutput()
videoDataOutput?.videoSettings = outputSettings
let videoSessionQueue = DispatchQueue(label: "video_capture_session_queue")
videoDataOutput?.setSampleBufferDelegate(self, queue: videoSessionQueue)
videoDataOutput?.alwaysDiscardsLateVideoFrames = true

//  Audio data output
let audioDataOutput = AVCaptureAudioDataOutput()
let audioSessionQueue = DispatchQueue(label: "audio_capture_session_queue")
audioDataOutput.setSampleBufferDelegate(self, queue: audioSessionQueue)

//  Configure session
captureSession.beginConfiguration()

let videoInput = try AVCaptureDeviceInput(device: currentCameraDevice)
captureSession.addInput(videoInput)
captureSession.addOutput(videoDataOutput!)

if let videoDataOutputConnection = videoDataOutput?.connection(with: .video), videoDataOutputConnection.isVideoStabilizationSupported {
    videoDataOutputConnection.preferredVideoStabilizationMode = .cinematic
}

if let audioInput = AVCaptureDevice.default(for: .audio) {
    try captureSession.addInput(AVCaptureDeviceInput(device: audioInput))
    captureSession.addOutput(audioDataOutput)
}

captureSession.commitConfiguration()

captureSession.startRunning()

有没有人有任何见解或解决方案?提前致谢。

【问题讨论】:

    标签: ios swift avcapturesession


    【解决方案1】:

    对于任何感兴趣的人,以下是我经过几天的挖掘后学到的知识:

    渲染到非AVCaptureVideoPreviewLayer 时,延迟是无法避免的——这基本上是在您运行AVCaptureVideoDataOutput 处理单个帧的任何时候(对于CI 和Metal 设置都是如此)。

    稳定模式.cinematic 导致最明显的延迟 - 约 1 秒。切换到.standard 可以将其缩短到大约 1/10 秒,并且产生的结果比完全没有稳定效果要好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 2017-04-27
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      相关资源
      最近更新 更多