2013-04-18 12 views
5

Ho bisogno di elaborare ogni fotogramma del fotogramma video catturato, anche se AVCaptureDevice.formats fornito così tante dimensioni diverse di dimensioni del fotogramma, sembra che solo AVCaptureSession supportino solo le dimensioni dei fotogrammi definite nei preset.Come utilizzare la risoluzione video personalizzata quando si usano AVFoundation e AVCaptureVideoDataOutput su mac

Ho anche provato ad impostare AVCaptureDevice.activeFormat prima AVCaptureInputDevice o dopo, non importa quello che ho impostato impostazione, se ho impostato AVCaptureSessionPresetHigh in AVCaptureSession, che mi danno sempre una cornice di 1280x720. Simile, se ho impostato AVCaptureSessionPreset 640x480, quindi posso ottenere solo la dimensione del fotogramma di 640x480.

Quindi, come posso impostare una dimensione del frame video personalizzata come 800x600? Utilizzando Media Foundation sotto Windows o V4L2 sotto linux, è facile impostare qualsiasi dimensione del fotogramma personalizzato durante l'acquisizione.

Sembra impossibile farlo sotto mac.

+1

Qualcuno delle risposte di seguito ti ha aiutato? – Stavash

risposta

0

Utilizzare la proprietà videoSettings di AVCapturwVideoDataOutput per descrivere il formato, la larghezza e l'altezza dei pixel in un dizionario.

1

Set kCVPixelBufferWidthKey e kCVPixelBufferHeightKey opzioni su AVCaptureVideoDataOutput oggetto. Campione minimo come sotto (aggiungere controllo degli errori).

_sessionOutput = [[AVCaptureVideoDataOutput alloc] init]; 

NSDictionary *pixelBufferOptions = [NSDictionary dictionaryWithObjectsAndKeys: 
           [NSNumber numberWithDouble:width], (id)kCVPixelBufferWidthKey, 
           [NSNumber numberWithDouble:height], (id)kCVPixelBufferHeightKey, 
           [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA], (id)kCVPixelBufferPixelFormatTypeKey, 
           nil]; 
[_sessionOutput setVideoSettings:pixelBufferOptions]; 

Nota: questa larghezza/altezza sovrascrive la larghezza/altezza preimpostate della sessione (se diversa).

+2

Questo non funziona. Come ha detto @ Bourne, "L'unica chiave attualmente supportata è la chiave kCVPixelBufferPixelFormatTypeKey." Se provi il tuo codice, ricevi un errore che dice "il dizionario videoSettings contiene una o più chiavi (ignorate) non supportate". – eyuelt

+0

@eyuelt Funziona. Vedi esempio su https://github.com/kiranpradeep/cameraRisoluzione – Kiran

+0

Hai ragione. Funziona su OSX. Scusa, non avevo capito che questa domanda era per OSX. Stavo cercando una soluzione a questo problema su iOS. – eyuelt

1

AFAIK non c'è un modo per farlo. Tutto il codice che ho visto per fare l'acquisizione video utilizza i preset.

Il documentation for AVCaptureVideoDataOutput per la proprietà impostazioni video dice

L'unica chiave attualmente supportato è la chiave kCVPixelBufferPixelFormatTypeKey.

così le altre risposte di passaggio nelle impostazioni video non funzioneranno e ignorerà semplicemente questi parametri.

+0

Funziona. Potrebbe essere non documentato. Si prega di consultare il campione all'indirizzo https://github.com/kiranpradeep/cameraResolution – Kiran

Problemi correlati