Применение эффекта к камере iPhone. Предварительный просмотр «видео» с помощью OpenGL

StackOverflow https://stackoverflow.com/questions/4893664

Вопрос

Моя цель - написать собственный контроллер вида камеры, который:

  1. Можно делать фотографии во всех четырех ориентациях интерфейса как с помощью задней, так и, если возможно, передней камеры.
  2. Правильно поворачивает и масштабирует предварительный просмотр «видео», а также фотографию с полным разрешением.
  3. Позволяет применить (простой) эффект ОБЕИМ к предварительному просмотру "видео" и фотографии с полным разрешением.

Мои предыдущие усилия описаны в этом вопросе . Моя последняя попытка заключалась в изменении образца 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, хотя это не то, что вы хотели услышать ...

Одед.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top