代码之家  ›  专栏  ›  技术社区  ›  AshleyS

如何查看使用QTKit转换电影的进度?

  •  0
  • AshleyS  · 技术社区  · 14 年前

    NSDictionary *dict = [NSDictionary 
         dictionaryWithObjectsAndKeys:
         [NSNumber numberWithBool:YES], QTMovieExport, 
         [NSNumber numberWithLong:kQTFileType3GPP], 
         QTMovieExportType, nil];
    
    [[movieView movie] writeToFile:@"/tmp/sample.3gp" 
         withAttributes:dict];
    

    i、 e.我想查看电影转换的进度,以便在进度条中显示它。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Pavan    14 年前

    http://www.mactech.com/articles/mactech/Vol.21/21.08/Threads/index.html

    如果电影非常大,这种方法可能需要相当长的时间才能完成。在此期间,用户将无法对应用程序执行任何操作,只能四处移动窗口。不是很刺激。

    来试试这个

    - (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);
    }
    

    如果你需要帮助,一定要告诉我。 让我知道这是否有助于lil。

    主键

    推荐文章