2010-05-03 4 views
2

Ce que j'essaie de faire, c'est d'obtenir le flux vidéo de la caméra non compressée et de le convertir en une texture OpenGL, pour l'afficher dans un CAOpenGLLayer. Est-ce le bon flux?Flux vidéo de la caméra dans CAOpenGLLayer

Je pensais utiliser une technique similaire à celle proposée here pour afficher les images vidéo de film, mais l'extrait suivant ne fonctionne pas, à la fin les coeurs tex sont tous à zéro.

Y a-t-il un exemple pour me pointer dans la bonne direction?

- (void) awakeFromNib { 

    QTCaptureSession *session = [[QTCaptureSession alloc] init]; 
    QTCaptureDevice *iSight = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeVideo]; 
    [iSight open:nil]; 

    QTCaptureDeviceInput *myInput = [QTCaptureDeviceInput deviceInputWithDevice:iSight]; 
    QTCaptureDecompressedVideoOutput *mCaptureDecompressedVideoOutput = [[QTCaptureDecompressedVideoOutput alloc] init]; 
    [mCaptureDecompressedVideoOutput setDelegate:self]; 

    [session addInput:myInput error:nil]; 
    [session addOutput:mCaptureDecompressedVideoOutput error:nil]; 
    [session startRunning]; 
} 

- (void)captureOutput:(QTCaptureOutput *)captureOutput didOutputVideoFrame:(CVImageBufferRef)videoFrame withSampleBuffer:(QTSampleBuffer *)sampleBuffer fromConnection:(QTCaptureConnection *)connection 
{ 
    GLfloat     lowerLeft[2]; 
    GLfloat     lowerRight[2]; 
    GLfloat     upperRight[2]; 
    GLfloat     upperLeft[2]; 

    CVOpenGLTextureGetCleanTexCoords(imageBuffer, lowerLeft, lowerRight, upperRight, upperLeft); 
} 

Répondre

0

Mieux vérifier l'exemple de code de Xcode, il ya un projet appelé LiveVideoMixer qui peut vous aider.

+0

Tous ces exemples sont de 32 bits seulement. Cette question concerne les frameworks 'AVFoundation' ou' QTKit' 64 bits. – spudwaffle