en una aplicación de cacao Actualmente estoy codificando, obtengo imágenes instantáneas de un procesador de Quartz Composer (objetos NSImage) y me gustaría codificarlas en un QTMovie en tamaño 720 * 480, 25 fps y códec H264 usando el método addImage: Aquí está la pieza correspondiente de código:¿Por qué mi aplicación de codificación de imágenes basada en QTKit es tan lenta?
qRenderer = [[QCRenderer alloc] initOffScreenWithSize:NSMakeSize(720,480) colorSpace:CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB) composition:[QCComposition compositionWithFile:qcPatchPath]]; // define an "offscreen" Quartz composition renderer with the right image size
imageAttrs = [NSDictionary dictionaryWithObjectsAndKeys: @"avc1", // use the H264 codec
QTAddImageCodecType, nil];
qtMovie = [[QTMovie alloc] initToWritableFile: outputVideoFile error:NULL]; // initialize the output QT movie object
long fps = 25;
frameNum = 0;
NSTimeInterval renderingTime = 0;
NSTimeInterval frameInc = (1./fps);
NSTimeInterval myMovieDuration = 70;
NSImage * myImage;
while (renderingTime <= myMovieDuration){
if(![qRenderer renderAtTime: renderingTime arguments:NULL])
NSLog(@"Rendering failed at time %.3fs", renderingTime);
myImage = [qRenderer snapshotImage];
[qtMovie addImage:myImage forDuration: QTMakeTimeWithTimeInterval(frameInc) withAttributes:imageAttrs];
[myImage release];
frameNum ++;
renderingTime = frameNum * frameInc;
}
[qtMovie updateMovieFile];
[qRenderer release];
[qtMovie release];
Funciona, sin embargo, mi solicitud no es capaz de hacer eso en tiempo real en mi nuevo MacBook Pro, aunque sé que QuickTime Broadcaster puede codificar imágenes en tiempo real en H264 con una calidad aún mayor que la que uso, en la misma computadora.
¿Por qué? ¿Cuál es el problema aquí? ¿Es esto un problema de administración de hardware (multi-core threading, GPU, ...) o me falta algo? Déjame aclarar que soy nuevo (2 semanas de práctica) en el mundo de desarrollo de Apple, tanto en las bibliotecas de Objective-C, el cacao, el X-código, Quicktime y compositor de cuarzo, etc.
Gracias por cualquier ayuda
¿Estás seguro de que quieres 720x480 a 25 fps? ¿No debería ser 720x480 a 29.97 fps o 720x576 a 25 fps? Dudo que arregle su problema de velocidad, pero parece un formato extraño. – user1118321