QTKitを使用して画像のリストをQuickTimeムービーに変換しようとしています。私は29.97にフレームレートを得ること以外はすべてを行う方法を考え出しました。QTMakeが29.97でQTMakeTimeが
QTTime frameDuration = QTMakeTime(1001, 30000)
は、しかし、この方法で、または(1000年、29970)を使用して、すべての私の試みは、まだ30fpsの時に映画を作る:他のフォーラムやリソースを通じて、トリックは、このようなものを使用しているようです。このfpsは、Quicktimeプレーヤーでプレイするときに表示されるものです。
アイデア?作成されたムービー全体のフレームレートを設定する他の方法はありますか?
は、ここではいくつかのサンプルコードです:
NSDictionary *outputMovieAttribs = [NSDictionary dictionaryWithObjectsAndKeys:@"jpeg", QTAddImageCodecType, [NSNumber numberWithLong:codecHighQuality], QTAddImageCodecQuality, nil];
QTTime frameDuration = QTMakeTime(1001, 30000);
QTMovie *outputMovie = [[QTMovie alloc] initToWritableFile:@"/tmp/testing.mov" error:nil];
[outputMovie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
[outputMovie setAttribute:[NSNumber numberWithLong:30000] forKey:QTMovieTimeScaleAttribute];
if (!outputMovie) {
printf("ERROR: Chunk: Could not create movie object:\n");
} else {
int frameID = 0;
while (frameID < [framePaths count]) {
NSAutoreleasePool *readPool = [[NSAutoreleasePool alloc] init];
NSData *currFrameData = [NSData dataWithContentsOfFile:[framePaths objectAtIndex:frameID]];
NSImage *currFrame = [[NSImage alloc] initWithData:currFrameData];
if (currFrame) {
[outputMovie addImage:currFrame forDuration:frameDuration withAttributes:outputMovieAttribs];
[outputMovie updateMovieFile];
NSString *newDuration = QTStringFromTime([outputMovie duration]);
printf("new Duration: %s\n", [newDuration UTF8String]);
currFrame = nil;
} else {
printf("ERROR: Could not add image to movie");
}
frameID++;
[readPool drain];
}
}
NSString *outputDuration = QTStringFromTime([outputMovie duration]);
printf("output Duration: %s\n", [outputDuration UTF8String]);
パーフェクト、それは素晴らしい作品! ご協力いただきありがとうございます! – bchapman
大歓迎です! – guitarflow