AVCaptureSession
пресетов покрывает только малую часть возможностей камеры устройства (те, в которых большинство приложений нуждаются в быстром, легком доступе). Для более мелкомасштабного управления - например, для выбора разрешения захвата, не предусмотренного предварительной настройкой сеанса, вместо этого вам необходимо использовать форматы захвата.
Посмотрите на имущество formats
устройства захвата, массив из AVCaptureDeviceFormat
объектов. Перечислите этот массив до тех пор, пока не найдете тот, размеры которого вы хотите. Для того, чтобы получить размеры, обратите внимание на формат Базовой CMFormatDescription
:
let fdesc = format.formatDescription
let dims = CMVideoFormatDescriptionGetDimensions(fdesc)
NSLog("%d x %d", dims.width, dims.height)
После того, как вы нашли нужный формат, заблокировать устройство для настройки и установить его activeFormat
:
if try device.lockForConfiguration() {
device.activeFormat = myChosenFormat
// set up other things like activeVideoMinFrameDuration if you want
device.unlockForConfiguration()
}
Вы можете узнать подробнее о настройке сеанса захвата с помощью AVCaptureDeviceFormat
в Apple programming guide и the WWDC2013 session, который ввел форматы устройств в iOS 7.0. (Большая часть того, что вы найдете по этой теме, нацелена на замедленное видео, съемку неподвижных изображений во время видео и другие вещи, которые вы не можете сделать с помощью пресетов сеанса, но это не единственные вещи, которые вы можете делать с форматами захвата.)
У вас есть дополнительная информация? какие предустановленные параметры вам удалось попробовать? –
сделал попытку AVCaptureSessionPreset640x480? –
@ Mr.T Мне нужно лучшее разрешение – Eyal