Захват видео со скоростью 240 кадров в секунду в Swift с помощью AVCaptureVideoIOS

Программируем под IOS
Ответить
Anonymous
 Захват видео со скоростью 240 кадров в секунду в Swift с помощью AVCaptureVideo

Сообщение Anonymous »


Я хочу видеть предварительный просмотр видео на дисплее моего iPhone с частотой 240 кадров в секунду.
Мой код (упрощенный) выглядит следующим образом: Сеанс выполнен, камера активирована, и на дисплее отображается фактический предварительный просмотр видео.

var-сеанс: AVCaptureSession? вар StillImageOutput: AVCaptureStillImageOutput? вар videoPreviewLayer: AVCaptureVideoPreviewLayer? переопределить функцию viewDidLoad() { супер.viewDidLoad() super.viewWillAppear(истина) сеанс = AVCaptureSession() пусть backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) ошибка var: NSError? ввод var: AVCaptureDeviceInput! делать { ввод = попробуйте AVCaptureDeviceInput (устройство: backCamera) } catch let errorgesehen как NSError { ошибка = errorgesehen ввод = ноль печать (ошибка!.localizedDescription) } configureCameraForHighestFrameRate (устройство: backCamera!) если ошибка == ноль && сеанс!.canAddInput(input) { сеанс!.addInput(вход) } videoPreviewLayer = AVCaptureVideoPreviewLayer (сеанс: сеанс) videoPreviewLayer!.videoGravity = AVLayerVideoGravityResizeAspect videoPreviewLayer!.frame = CGRect(x: 0,0, y: 0,0, ширина: view.bounds.size.width, высота: view.bounds.size.height) videoPreviewLayer!.backgroundColor = UIColor(красный: 0, зеленый: 1, синий: 0, альфа: 1).cgColor view.layer.addSublayer(videoPreviewLayer!) сеанс?.startRunning() UIApplication.shared.isIdleTimerDisabled = true } Теперь я хотел, чтобы этот предварительный просмотр видео показывался со скоростью 240 кадров в секунду (60 или 120 тоже подойдут, но лучше всего 240). Чтобы решить эту проблему, я использовал это: https://developer.apple.com/documentati ... turedevice (я преобразовал его в Swift). Функция configureCameraForHighestFrameRate имеет следующий код:

func configureCameraForHighestFrameRate(device: AVCaptureDevice) { вар bestFormat: AVCaptureDeviceFormat? = ноль вар bestFrameRateRange: AVFrameRateRange? = ноль для formatf в device.formats { вар формат = formatf как! Формат AVCaptureDeviceFormat печать (формат) для rangef в формате.videoSupportedFrameRateRanges { диапазон вар = диапазонf как! AVFrameRateRange печать (диапазон) если (bestFrameRateRange == ноль) { лучшийФормат = формат bestFrameRateRange = диапазон } else if range.maxFrameRate > bestFrameRateRange!.maxFrameRate { лучшийФормат = формат bestFrameRateRange = диапазон } } } если (bestFormat == ноль) { print("Es gibt keine Formate, die Apokalypse ist ausgebrochen.") возвращаться; } Еще если (bestFrameRateRange == ноль) { print("Es gibt keine Bilder, die Apokalypse ist ausgebrochen.") возвращаться; } пусть Рихтиг = bestFormat! пусть fps = bestFrameRateRange! делать { попробуйте device.lockForConfiguration() } поймать ошибку let как NSError { печать(ошибка.описание) } device.activeFormat = Рихтиг device.activeVideoMinFrameDuration = fps.minFrameDuration device.activeVideoMaxFrameDuration = fps.minFrameDuration устройство.unlockForConfiguration() } Этот код ищет формат AVCaptureDeviceFormat, в котором число кадров в секунду максимально (= 240). Фактический формат установлен на этот формат, а число кадров в секунду установлено на максимальное значение (= 240).
Но у меня проблема, видеовыход по-прежнему содержит только 30 кадров в секунду (если я очень быстро переверну айфон, я его узнаю).
Кроме того, существует несколько форматов, в которых максимальная частота кадров составляет 240. Этот код выбирает только первый из них, но я спрашиваю меня, есть ли разница и какой выбрать, чтобы получить наилучший результат. Может ли кто-нибудь сказать разницу между несколькими форматами или какой из них является форматом, который приложение «Камера» использует в инструменте замедленной съемки? Спасибо большое :)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»