我是一个 OS X 编程新手,我必须以不同的时间间隔从互联网上获取一堆 NSImage,并从中构建一个渐进式电影文件。例如,NSImage 的到达速率可以是毫秒到 3 秒之间的任何时间间隔。
我想知道这是否是使用 QTKit 的正确方法,以及如何计算帧速率,因为帧几乎是随机出现的。
我也想知道内存使用情况,它会在最后写入之前尝试将整部电影保存在内存中吗?
这是我从网上拼凑的代码:
-(void)startRecording
{
NSDictionary *myDict = nil;
myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"mp4v",
QTAddImageCodecType,
[NSNumber numberWithLong:codecHighQuality],
QTAddImageCodecQuality,
nil];
long long timeValue = 1;
long timeScale = 3;
QTTime duration = QTMakeTime(timeValue, timeScale);
QTMovie *mMovie =[[QTMovie alloc] initToWritableFile:@"tmpfps.tmp" error:NULL];
self.mMovie=mMovie;
self.duration=duration;
self.myDict=myDict;
}
-(void) addFrame:(NSImage*)imageFrame
{
[mMovie addImage:imageFrame
forDuration:self.duration
withAttributes:self.myDict];
}
-(void) stopRecording
{
myDict = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
forKey:QTMovieFlatten];
[self.mMovie writeToFile:@"my.mov" withAttributes:myDict];
self.mMovie=nil;
}