如何查看使用以下QTKit代码转换电影的进度?
NSDictionary *dict = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], QTMovieExport,
[NSNumber numberWithLong:kQTFileType3GPP],
QTMovieExportType, nil];
[[movieView movie] writeToFile:@"/tmp/sample.3gp"
withAttributes:dict];
即。我想查看电影转换的进度,以便我可以在进度条中显示它。
答案 0 :(得分:1)
摘自本网站:http://www.mactech.com/articles/mactech/Vol.21/21.08/Threads/index.html
如果电影非常大,这种方法可能需要很长时间才能完成。在此期间,除了移动窗口外,用户将无法对应用程序执行任何操作。不是很令人兴奋。
稍微好一点的解决方案是使用电影:shouldContinueOperation:withPhase:atPercent:withAttributes:delegate方法。这是QuickTime的电影进度函数的包装,它将用于显示一个对话框,显示导出的进度并允许用户取消操作。 在这里试试这个
- (BOOL)movie:(QTMovie *)movie
shouldContinueOperation:(NSString *)op
withPhase:(QTMovieOperationPhase)phase
atPercent:(NSNumber *)percent
withAttributes:(NSDictionary *)attributes
{
OSErr err = noErr;
NSEvent *event;
double percentDone = [percent doubleValue] * 100.0;
switch (phase) {
case QTMovieOperationBeginPhase:
// set up the progress panel
[progressText setStringValue:op];
[progressBar setDoubleValue:0];
// show the progress sheet
[NSApp beginSheet:progressPanel
modalForWindow:[movieView window] modalDelegate:nil
didEndSelector:nil contextInfo:nil];
break;
case QTMovieOperationUpdatePercentPhase:
// update the percent done
[progressBar setDoubleValue:percentDone];
[progressBar display];
break;
case QTMovieOperationEndPhase:
[NSApp endSheet:progressPanel];
[progressPanel close];
break;
}
// cancel (if requested)
event = [progressPanel
nextEventMatchingMask:NSLeftMouseUpMask
untilDate:[NSDate distantPast]
inMode:NSDefaultRunLoopMode dequeue:YES];
if (event && NSPointInRect([event locationInWindow],
[cancelButton frame])) {
[cancelButton performClick:self];
err = userCanceledErr;
}
return (err == noErr);
}
希望这有帮助。
如果您需要任何帮助,请告诉我。 让我知道这是否有帮助。
<强> PK 强>