2010-11-30 5 views
1

как я могу реализовать слайдер цифрового зума для камеры. Я использую следующие API: AVCaptureVideoPreviewLayer, AVCaptureSession, AVCaptureVideoDataOutput, AVCaptureDeviceInput.цифровое увеличение камеры в ios 4.0 и более поздних версиях

Я хотел бы иметь тот же слайдер, который доступен в приложении для iphone 4.

Заранее благодарим за любые советы и примеры!

ответ

1

Я новичок, и я попытался сделать масштабирование только с помощью рамки AVFoundation, используя AVCaptureVideoPreviewLayer, и я тоже не могу заставить его работать. Я думаю, что это потому, что у этого слоя есть свой AVCaptureSession, который управляет собственным выходом, и хотя я добавил его как подуровень в UIScrollView, он по-прежнему работает сам по себе, и уровень прокрутки не может повлиять на уровень предварительного просмотра.

От WWDC сессии 419, «Захват с камеры с помощью AVFoundation в iOS5», Брэд сказал Форд «AVCaptureVideoPreviewLayer не наследует AVCaptureOutput (как AVCaptureVideoDataOutput делает). Он наследует от CALayer, но может быть вставлен в ядро ​​анимации дерева (например, другие слои) .В AVFoundation AVSession владеет его выходами, но не владеет его слоями. Слои владеют сеансом. Поэтому, если вы хотите вставить слой в иерархию представлений, вы присоедините к нему сеанс и забудьте об этом. Затем, когда дерево слоев избавится от себя, оно также очистит сеанс ».

Я видел Брэда Ларсона, используя комбинацию Open GL ES и рамки AVFoundation по адресу: http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios использовать AVCaptureVideoPreviewLayer, где он может корректировать исходные данные из камеры, поэтому я предполагаю, то будет место, чтобы начать. Проверьте его приложение ColorTrackingCamera. Его использование шейдеров, которые вам (и мне) не нужно масштабировать, но я думаю, что подобный механизм можно использовать для увеличения.

О, я забыл упомянуть, что Брэд Ларсон НЕ прикрепляет AVCaptureInput к AVCaptureSession. Я вижу, что он также использует основной поток для своей очереди, а не создает свою собственную очередь в другом потоке. Его методы Open GL ES для drawFrame - это также то, как он отображает изображение, а сам сеанс захвата не делает этого. Итак, если вы понимаете больше, или мои предположения ошибочны, сообщите мне об этом.

Надеюсь, это поможет, но поскольку я новичок во всем этом и OpenGL ES, я предполагаю, что библиотека может использоваться для масштабирования, если мы сможем захватить каждый кадр и превратить его в UIImage с другим разрешением и/или размер кадра.

Jeff W.

Смежные вопросы