【问题标题】:Setting a low frame rate of AVCaptureDevice in AVCaptureSession in Swift在 Swift 的 AVCaptureSession 中设置 AVCaptureDevice 的低帧率
【发布时间】:2015-01-07 23:12:25
【问题描述】:

在 Swift 中使用 AVCaptureDevice 进行捕获时,我尝试将帧速率设置为每秒 10 帧。

我相信这是通过设置 AVCaptureDevice 的 activeVideoMaxFrameDuration 来实现的,但也许我做错了,还有另一种方法。

这是我当前的代码,它运行没有错误,但对预览或捕获的视频中的帧速率没有任何影响,它仍然看起来是全动态的。

    var devices = AVCaptureDevice.devicesWithMediaType(mediaType);
    var captureDevice: AVCaptureDevice = devices[0] as AVCaptureDevice;

    captureDevice.lockForConfiguration(&error)

    captureDevice.activeVideoMinFrameDuration = CMTimeMake(1,10)
    captureDevice.activeVideoMaxFrameDuration = CMTimeMake(1,10)

    captureDevice.unlockForConfiguration()

我已经检查了 AVCaptureDeviceFormat videoSupportedFrameRateRanges minFrameRate 并且应该支持每秒 10 帧。

将 CMTime 更改为 videoSupportedFrameRateRanges 之外的内容确实会引发错误,因此我知道正在使用该代码,但它没有任何效果。

提前感谢您的帮助

【问题讨论】:

  • 我也遇到了同样的问题,请问您解决了吗
  • "但对预览或捕获的视频中的帧速率没有任何影响,看起来仍然是全动态。" -- 您是否检查了编解码器的详细信息以获取录制的视频文件的帧速率?

标签: ios swift


【解决方案1】:

我认为您应该在捕获会话开始运行后更改设备配置以使其生效。 我希望这对你有用,就像对我一样。 干杯 =)

【讨论】:

  • 这确实是唯一可行的解​​决方案。感谢分享!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多