Применение эффекта к камере iPhone. Предварительный просмотр «видео» с помощью OpenGL
-
28-10-2019 - |
Вопрос
Моя цель - написать собственный контроллер вида камеры, который:
- Можно делать фотографии во всех четырех ориентациях интерфейса как с помощью задней, так и, если возможно, передней камеры.
- Правильно поворачивает и масштабирует предварительный просмотр «видео», а также фотографию с полным разрешением.
- Позволяет применить (простой) эффект ОБЕИМ к предварительному просмотру "видео" и фотографии с полным разрешением.
Мои предыдущие усилия описаны в этом вопросе . Моя последняя попытка заключалась в изменении образца GLVideoFrame от Apple (из WWDC 2010). Однако мне не удалось заставить iPhone 4 правильно отображать предварительный просмотр «видео», когда предустановкой сеанса является AVCaptureSessionPresetPhoto.
Кто-нибудь пробовал это или знает, почему пример не работает с этим пресетом?
В примере Apple используется предустановка с размером видео 640 x 480 и размером текстуры по умолчанию 1280 x 720. Задняя камера iPhone 4 обеспечивает разрешение только 852x640 пикселей, если задано значение AVCaptureSessionPresetPhoto.
Размеры видео / фото камеры устройства iOS, если предварительно установлено значение AVCaptureSessionPresetPhoto:
- iPhone 4, задняя сторона: видео - 852x640, фото - 2592x1936.
- iPhone 4 спереди: видео и фото - 640 x 480
- iPod Touch 4G, задняя панель: видео и фото - 960x720
- iPod Touch 4G, передняя панель: видео и фото - 640 x 480
- iPhone 3GS: видео - 512 x 384, фото - 2048 x 1536
< sizesUpdate
Я получил тот же искаженный результат видео при переключении примера ColorTracking Брэда Ларсона (< a href="http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios" rel="nofollow noreferrer"> сообщение в блоге ) для использования AVCaptureSessionPresetPhoto.
Решение
Проблема в том, что код AVCaptureSessionPresetPhoto
теперь зависит от контекста и работает с различным разрешением в зависимости от того, отображаете ли вы видео или снимки неподвижных изображений.
Предварительный просмотр в реальном времени отличается для этого режима, поскольку он заполняет строки дополнительными байтами.Я предполагаю, что это какая-то оптимизация оборудования.
В любом случае, вы можете увидеть, как я решил проблему здесь:
CVImagePutture в iOS, искаженный из AVCaptureSession с помощью AVCaptureSession
Другие советы
AVCaptureSessionPresetPhoto предназначен для фотосъемки, а не для записи прямой трансляции. Вы можете прочитать об этом здесь: http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_MediaCapture.html
(Я считаю, что на самом деле это две разные камеры или сенсоры, поскольку они ведут себя по-разному, и есть задержка в пару секунд только для переключения между Фото и, скажем, 640x480).
Вы даже не можете использовать оба пресета одновременно, и переключение между ними также является головной болью - Как получить как видеовыход, так и изображение с полным разрешением фото в AVFoundation Framework
HTH, хотя это не то, что вы хотели услышать ...
Одед.