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