У меня проблема с фреймворком AVFoundation. Всякий раз, когда я устанавливаю FPS камеры на 1, через некоторое время светодиод моей камеры FaceTime HD начинает мигать с интервалом в одну секунду. Кроме того, больше не вызываются вызовы делегата (делегата буфера выборки).
Проблема не возникает, когда я устанавливаю 2 FPS, но для приложения, которое я разрабатываю, мне нужно, чтобы оно было установлено на 1 FPS.
Просто проверьте здесь, есть ли у кого-то еще проблемы с камерой при настройке на один FPS. При необходимости я опубликую отчет об ошибке с Apple. Я использую Macbook Air с середины 2013 года под управлением macOS 10.13.3.
Вот код, который я использую для установки FPS:
/// Set the frame rate of the current av capture session, if it is supported by the camera.
///
/// - Parameter fps: The desired frames per second.
func set(fps: Int) {
guard let captureDevice = captureDevice,
let format = captureDevice.activeFormat else { return }
let doubleFPS = Double(fps)
// Lock the device before changing the frame rate.
try? captureDevice.lockForConfiguration()
// Look for a supported frame rate range that is supported by the camera.
for range in format.videoSupportedFrameRateRanges as! [AVFrameRateRange] {
if range.minFrameRate <= doubleFPS &&
range.maxFrameRate >= doubleFPS {
let time: CMTime = CMTime(value: 1, timescale: CMTimeScale(fps))
captureDevice.activeVideoMaxFrameDuration = time
captureDevice.activeVideoMinFrameDuration = time
break
}
}
// Unlock the device now that we are done.
captureDevice.unlockForConfiguration()
}
AVCaptureVideoDataOutput
. Не могли бы вы рассказать, как я могу отбрасывать кадры, чтобы обрабатывать только 1 кадр в секунду? Стратегия, которую я описал в своем вопросе, кажется, соответствует следующему: developer.apple.com/library/content/technotes/tn2445/ 09.04.2018