в приложении какао, которое я сейчас кодирую, я получаю снимки с изображения из рендерера Quartz Composer (объекты NSImage) и хочу кодировать их в QTMovie с разрешением 720 * 480, 25 кадров в секунду и кодеком 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, и т. Д.
Спасибо за любую помощь