в приложение какао, которое я сейчас кодирую, я получаю изображения снимков из средства визуализации Quartz Composer (объекты NSImage), и я хотел бы закодировать их в QTMovie с размером 720 * 480, 25 fps и кодеком H264, используя addImage: метод. Вот соответствующий фрагмент кода:
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];
Он работает, однако мое приложение не может делать это в реальном времени на моем новом MacBook Pro, хотя я знаю, что QuickTime Broadcaster может кодировать изображения в реальном времени в H264 с еще более высоким качеством, чем то, которое я использую, на том же компьютере.
Так почему? В чем проблема? Это проблема управления оборудованием (многоядерные потоки, графический процессор, ...) или мне что-то не хватает? Позвольте мне сделать предисловие, что я новичок (2 недели практики) в мире разработки Apple, как в библиотеках objective-C, cocoa, X-code, Quicktime и Quartz Composer и т. Д.
Спасибо за любую помощь