Прогресс AVAssetExportSession застревает на ipad, но не на симуляторе - PullRequest
2 голосов
/ 09 октября 2011

Этот кусок кода отлично работает на симуляторе.Однако, когда я пытаюсь запустить экспорт на своем iPad, он всегда зависает при значении прогресса 0,14583.Может кто-нибудь помочь мне понять, почему?застрял на этом довольно долго.

Вот мой код:

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];

}

1 Ответ

3 голосов
/ 10 октября 2011
while(exportSession.progress != 1.0){
    NSLog(@"loading... : %f",exportSession.progress);
    sleep(1);
}

Этот цикл while блокирует основной поток. NSLog может не быть в состоянии стрелять должным образом. Попробуйте это без цикла while?

...