AVAssetExportSession перестает выполняться

У меня проблема с AVAssetExportSession, когда прогресс перестает увеличиваться, но в статусе по-прежнему указано, что выполняется экспорт. На самом деле это довольно редкое явление, оно работает безупречно примерно в 99,99% случаев, но я все равно хочу решить проблему.

Итак, я начинаю экспорт:

    exportSession = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetMediumQuality];
    exportSession.videoComposition = videoComposition; 
    exportSession.outputFileType = @"com.apple.quicktime-movie";
    exportSession.outputURL = outputURL;
    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        ...
    }];

Затем таймер проверяет ход выполнения:

    AVAssetExportSessionStatus status = [exportSession status];
    float progress = 0;
    if (status == AVAssetExportSessionStatusExporting) {
        progress = [exportSession progress];
    } else if (status == AVAssetExportSessionStatusCompleted) {
        progress = 1;
    }
    NSLog(@"%d %f", status, progress);
    [delegate processor:self didProgress:progress];

И вывод в итоге выглядит так:

2012-05-23 14:28:59.494 **********[1899:707] 2 0.125991
2012-05-23 14:28:59.994 **********[1899:707] 2 0.185280
2012-05-23 14:29:00.494 **********[1899:707] 2 0.259393
2012-05-23 14:29:00.994 **********[1899:707] 2 0.326093
2012-05-23 14:29:01.494 **********[1899:707] 2 0.400206
2012-05-23 14:29:01.995 **********[1899:707] 2 0.481729
2012-05-23 14:29:02.495 **********[1899:707] 2 0.541019
2012-05-23 14:29:02.997 **********[1899:707] 2 0.622542
2012-05-23 14:29:03.493 **********[1899:707] 2 0.681832
2012-05-23 14:29:03.995 **********[1899:707] 2 0.763355
2012-05-23 14:29:04.494 **********[1899:707] 2 0.822645
2012-05-23 14:29:04.994 **********[1899:707] 2 0.880082
2012-05-23 14:29:05.493 **********[1899:707] 2 0.880082
2012-05-23 14:29:05.994 **********[1899:707] 2 0.880082
...
2012-05-23 14:43:22.994 **********[1899:707] 2 0.880082
2012-05-23 14:43:23.493 **********[1899:707] 2 0.880082
2012-05-23 14:43:23.994 **********[1899:707] 2 0.880082
2012-05-23 14:43:24.494 **********[1899:707] 2 0.880082

(Примечание. Он не останавливается каждый раз на одном и том же проценте, его совершенно случайно)

Как вы можете видеть из временных меток, первые 88% заняли 5 секунд, а затем я дал ему поработать еще 13 минут (полная обработка видео обычно не занимает более 10 секунд) без изменение в прогрессе.

В настоящее время мой единственный вариант — проверить, не изменился ли прогресс за последние X секунд, и просто сообщить пользователю, что это не удалось, и повторить попытку.

Есть идеи?

17
задан poiuy_qwert 23 May 2012 в 20:43
поделиться