Applicazione dell'effetto all'anteprima della fotocamera dell'iPhone "Video" utilizzando OpenGL

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

Domanda

Il mio obiettivo è scrivere un controller personalizzato per la visualizzazione della videocamera che:

  1. Può scattare foto in tutti e quattro gli orientamenti dell'interfaccia con la fotocamera posteriore e, se disponibile, anteriore.
  2. Ruota e ridimensiona correttamente l'anteprima del "video" e la foto a piena risoluzione.
  3. Consente di applicare un (semplice) effetto SIA al "video" di anteprima e alla foto a piena risoluzione.

Il mio impegno precedente è documentato in questa domanda . Il mio ultimo tentativo è stato quello di modificare il GLVideoFrame di esempio di Apple (da WWDC 2010). Tuttavia, non sono riuscito a far sì che l'iPhone 4 visualizzi correttamente il "video" di anteprima quando il preset della sessione è AVCaptureSessionPresetPhoto.

Qualcuno l'ha provato o sa perché l'esempio non funziona con questo preset?

L'esempio di Apple utilizza un preset con dimensioni video di 640 x 480 e una dimensione della trama predefinita di 1280 x 720. La fotocamera posteriore dell'iPhone 4 offre solo 852x640 quando il preset è AVCaptureSessionPresetPhoto.

Dimensioni video / foto della fotocamera del dispositivo iOS quando l'impostazione predefinita è AVCaptureSessionPresetPhoto:

  • Parte posteriore di iPhone 4: il video è 852 x 640 e le foto sono 2592 x 1936
  • Parte anteriore di iPhone 4: video e foto sono 640 x 480
  • Parte posteriore dell'iPod Touch 4G: video e foto sono 960 x 720
  • iPod Touch 4G anteriore: video e foto sono 640 x 480
  • iPhone 3GS: il video è 512 x 384 e le foto sono 2048 x 1536

<”Aggiorna

Ho ottenuto lo stesso video incomprensibile quando ho cambiato l'esempio ColorTracking di Brad Larson (< a href="http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios" rel="nofollow noreferrer"> post del blog ) da utilizzare AVCaptureSessionPresetPhoto.

È stato utile?

Soluzione

Il problema è che AVCaptureSessionPresetPhoto ora è sensibile al contesto e funziona con risoluzioni diverse a seconda che si stiano visualizzando video o acquisizioni di immagini fisse.

L'anteprima dal vivo è diversa per questa modalità perché riempie le righe con byte extra.Immagino che questa sia una sorta di ottimizzazione hardware.

In ogni caso, puoi vedere come ho risolto il problema qui:

iOS CVImageBuffer distorto da AVCaptureSessionDataOuttureSessionPhotosession

Altri suggerimenti

AVCaptureSessionPresetPhoto serve per scattare foto, non per acquisire feed dal vivo. Puoi leggere informazioni qui: http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_MediaCapture.html

(La mia convinzione è che si tratti in realtà di due fotocamere o sensori diversi, poiché si comportano in modo molto diverso e ci sono un paio di secondi di ritardo solo per passare dalla foto a 640 x 480, diciamo).

Non puoi nemmeno usare entrambi i preset contemporaneamente e anche il passaggio da uno all'altro è un mal di testa - Come ottenere sia l'uscita video che l'immagine a piena risoluzione fotografica in AVFoundation Framework

HTH, anche se non quello che volevi sentire ...

Oded.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top