2011-10-09 83 views
2

这段代码在模拟器上正常工作。但是,当我尝试在iPad上运行导出时,它始终挂起进度值0.14583-ish。有人可以帮我弄清楚为什么?已经停留了很长时间。AVAssetExportSession进度卡在ipad上,但不在模拟器上

这里是我的代码:

NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:composition]; 
if ([compatiblePresets containsObject:AVAssetExportPresetLowQuality]) { 
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] 
              initWithAsset:composition presetName:AVAssetExportPresetLowQuality]; 


    exportSession.outputURL = [NSURL fileURLWithPath:[[ShowDAO getUserDocumentDir] stringByAppendingString:exportFilename]]; 
    exportSession.outputFileType = AVFileTypeQuickTimeMovie; 

    CMTime start = CMTimeMakeWithSeconds(0, 1); 
    CMTime duration = CMTimeMakeWithSeconds(1000, 1); 
    CMTimeRange range = CMTimeRangeMake(start, duration); 
    exportSession.timeRange = range; 

    [exportSession exportAsynchronouslyWithCompletionHandler:^{ 
     switch ([exportSession status]) { 
      case AVAssetExportSessionStatusCompleted: 
       NSLog(@"Export Completed"); 
       break; 
      case AVAssetExportSessionStatusFailed: 
       NSLog(@"Export failed: %@", [[exportSession error] localizedDescription]); 
       break; 
      case AVAssetExportSessionStatusCancelled: 
       NSLog(@"Export cancelled"); 
       break; 
      default: 
       break; 
     } 


    }]; 

    while(exportSession.progress != 1.0){ 
     NSLog(@"loading... : %f",exportSession.progress); 
     sleep(1); 
    } 
    [exportSession release]; 

} 

回答

3
while(exportSession.progress != 1.0){ 
    NSLog(@"loading... : %f",exportSession.progress); 
    sleep(1); 
} 

这while循环阻塞主线程。 NSLog可能无法正常启动。尝试没有while循环?

+1

这就是为什么他睡觉(1)。我更喜欢[NSThread sleepForTimeInterval:1.0]; –

相关问题