1

120fps、640x480 でビデオを録画しようとしています。

次のコマンドで fps を設定できます。

// currentCamera is an AVCaptureDevice, session is an AVCaptureSession
let input = try AVCaptureDeviceInput(device: currentCamera)
session.addInput(input)
let targetFrameRate = CMTimeMake(1, 120)
if let slowMoFormat = currentCamera.formats
  .flatMap({ return ($0 as? AVCaptureDeviceFormat) })
  .filter({ format in
    for x in format.videoSupportedFrameRateRanges {
      if let range = x as? AVFrameRateRange {
        if range.minFrameDuration <= targetFrameRate {
          return true
        }
      }
    }
    return false
  }).first {
  try currentCamera.lockForConfiguration()
  currentCamera.activeFormat = slowMoFormat
  currentCamera.activeVideoMinFrameDuration = targetFrameRate
  currentCamera.activeVideoMaxFrameDuration = targetFrameRate
  currentCamera.unlockForConfiguration()
}

またはビデオサイズ

// session is an AVCaptureSession
session.sessionPreset = AVCaptureSessionPreset640x480

activeFormatただし、またはセッションのプリセットを変更すると、他の変更が上書きされるため、両方を行うことはできません。私が見逃している明らかなものはありますか?

4

0 に答える 0