QTKit을 사용하여 이미지 목록을 퀵타임 동영상으로 변환하려고합니다. 나는 프레임 속도를 29.97로 잡는 것 외에는 모든 것을하는 방법을 알아 냈습니다.QTMake 시간 : 29.97 (QTMakeTime)
QTTime frameDuration = QTMakeTime(1001, 30000)
는 그러나,이 방법, 또는 (1000, 29970)를 사용하여 내 모든 시도는 여전히 초당 30 프레임에서 동영상을 제작 : 다른 포럼과 자원을 통해 트릭는 다음과 같이 사용하는 것으로 보인다. 이 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