Применение эффекта к iPhone Camera Preview "Video" с помощью OpenGL - PullRequest
1 голос
/ 04 февраля 2011

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

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

Мои предыдущие попытки описаны в этом вопросе .Моя последняя попытка была изменить образец Apple GLVideoFrame (из WWDC 2010).Однако мне не удалось заставить iPhone 4 правильно отображать «видео» предварительного просмотра, если в качестве предустановки сеанса выбрано AVCaptureSessionPresetPhoto.

Кто-нибудь пробовал это или знает, почему пример не работает с этой предустановкой?

В примере Apple используется предустановка с размерами видео 640x480 и размером текстуры по умолчанию 1280x720.Задняя камера iPhone 4 обеспечивает только 852x640 при предустановке AVCaptureSessionPresetPhoto.

Размеры видео / фото камеры устройства iOS, если предустановкой является AVCaptureSessionPresetPhoto:

  • Задняя часть iPhone 4: видео 852x640 и фотографии2592x1936
  • перед iPhone 4: видео и фото 640x480
  • iPod Touch 4G сзади: видео и фото 960x720
  • iPod Touch 4G спереди: видео и фото 640x480
  • iPhone 3GS: видео 512x384 и фотографии 2048x1536

Обновление

Я получил то же искаженное видео результатпри переключении примера ColorTracking Брэда Ларсона ( сообщение в блоге ) на использование AVCaptureSessionPresetPhoto.

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Проблема в том, что AVCaptureSessionPresetPhoto теперь учитывает контекст и работает в разных разрешениях, в зависимости от того, отображаете ли вы видео или захваты неподвижных изображений.

Предварительный просмотр в реальном времени отличается для этого режима, поскольку он дополняетстроки с лишними байтами.Я предполагаю, что это какая-то аппаратная оптимизация.

В любом случае вы можете увидеть, как я решил проблему здесь:

CVImageBuffer iOS, искаженный из AVCaptureSessionDataOutput с AVCaptureSessionPresetPhoto

0 голосов
/ 17 мая 2011

AVCaptureSessionPresetPhoto предназначен для фотографирования, а не для захвата прямой трансляции. Вы можете прочитать об этом здесь: http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_MediaCapture.html

(Я считаю, что на самом деле это две разные камеры или датчики, поскольку они ведут себя очень по-разному, и есть задержка в пару секунд только для переключения между фото и, скажем, 640x480).

Вы не можете даже использовать оба пресета одновременно, и переключение между ними также является головной болью - Как получить как выходной видеосигнал, так и изображение с полным разрешением фото в AVFoundation Framework

HTH, хотя не то, что вы хотели услышать ...

Одед.

...