Я использую переднюю камеру в своем приложении. Я хочу, чтобы во время фотосъемки пользователь мог увеличивать и уменьшать масштаб камеры.
я попробовал этот код
let device = AVCaptureDevice.default(for: .video)
print(sender.scale)
let vZoomFactor = sender.scale * prevZoomFactor
if sender.state == .ended {
prevZoomFactor = vZoomFactor >= 1 ? vZoomFactor : 1
}
if sender.state == .changed{
do {
try device!.lockForConfiguration()
if (vZoomFactor <= device!.activeFormat.videoMaxZoomFactor) {
device!.videoZoomFactor = max(1.0, min(vZoomFactor, device!.activeFormat.videoMaxZoomFactor))
device?.unlockForConfiguration()
} else {
print("Unable to set videoZoom: (max \(device!.activeFormat.videoMaxZoomFactor), asked \(vZoomFactor))")
}
} catch {
print("\(error.localizedDescription)")
}
}
все работает нормально на задней камере, но зум не применяется на передней камере.
да, я проверил некоторые приложения, такие как apps.apple.com/ru/app/mirror/id431471943, они поддерживают увеличение передней камеры
Хорошо, вы отлаживали значения коэффициента масштабирования в разных режимах? Что не соответствует условию if?
да, я ничего не делал, не выходит из строя .. на самом деле, когда я переключаюсь на заднюю камеру, она работает нормально, когда я переключаюсь на переднюю, код работает, но масштабирование не применяется





ну, потратив несколько часов на этот код, я понял, где совершал ошибку.
let device = AVCaptureDevice.default(for: .video)
это по умолчанию получит заднюю камеру и будет работать отлично, но когда я переключаю ее на переднюю, она не будет рассматриваться как задняя камера, поэтому я просто добавил условие
if currentcam == frontcam {
let device = frontcam
//did other stuff for zooimng
}
else {
let device = AVCaptureDevice.default(for: .video)
//did other stuff for zooimng
}
это отлично сработало для меня
Я чувствую, что передние камеры не поддерживают функцию увеличения / уменьшения. Вы пробовали приложение камеры iPhone?