在我目前正在编码的可可应用程序中,我从 Quartz Composer 渲染器(NSImage 对象)获取快照图像,我想使用 addImage 将它们编码为 720*480 大小、25 fps 和 H264 编解码器的 QTMovie : 方法。下面是对应的一段代码:
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 实时编码图像,质量比我使用的更高.
所以为什么 ?这里有什么问题?这是硬件管理问题(多核线程、GPU 等)还是我遗漏了什么?让我先说一下我是 Apple 开发领域的新手(练习了 2 周),包括 Objective-C、cocoa、X-code、Quicktime 和 Quartz Composer 库等。
谢谢你的帮助