Странное поведение зависания AVMutableComposition при использовании AVMutableVideoComposition

Я пытаюсь объединить несколько видео с помощьюAVMutableComposition, Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсьAVMutableVideoComposition для применения каких-либо инструкций мое воспроизведение останавливается вAVPlayer в точности 6 секунд.

Еще одна интересная вещь - это то, что он играет нормально, если я воспроизведу его в приложении Photos для iPad после экспорта с использованиемvideoComposition, Так почему же он замерзает вAVPlayer в 6 секунд?

Код:

AVMutableComposition *mutableComposition = [AVMutableComposition composition];

    AVMutableCompositionTrack *videoCompositionTrack = [mutableComposition addMutableTrackWithMediaType:AVMediaTypeVideo
                                                                                        preferredTrackID:kCMPersistentTrackID_Invalid];

    AVMutableCompositionTrack *audioCompositionTrack = [mutableComposition addMutableTrackWithMediaType:AVMediaTypeAudio
                                                                                       preferredTrackID:kCMPersistentTrackID_Invalid];

    for (AVURLAsset *asset in assets)
    {
            AVAssetTrack *assetTrack;
            assetTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
            AVAssetTrack *audioAssetTrack = [asset tracksWithMediaType:AVMediaTypeAudio].firstObject;


            NSError *error;
            [videoCompositionTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, assetTrack.timeRange.duration )
                                                   ofTrack:assetTrack
                                                    atTime:time
                                                     error:&error];

            if (error) {
                NSLog(@"asset url :: %@",assetTrack.asset);
                NSLog(@"Error1 - %@", error.debugDescription);
            }

            [audioCompositionTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAssetTrack.timeRange.duration)
                                               ofTrack:audioAssetTrack
                                                atTime:time
                                                 error:&error];

            if (error) {
                NSLog(@"Error2 - %@", error.debugDescription);
            }

            time = CMTimeAdd(time, assetTrack.timeRange.duration);

            if (CGSizeEqualToSize(size, CGSizeZero)) {
                size = assetTrack.naturalSize;;
            }
        }

        AVMutableVideoCompositionInstruction *mainInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
        AVMutableVideoCompositionLayerInstruction *videoTrackLayerInstruction =  [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoCompositionTrack];

        mainInstruction.timeRange = CMTimeRangeMake(kCMTimeZero, time);
        mainInstruction.layerInstructions = [NSArray arrayWithObjects:videoTrackLayerInstruction, nil];
        AVMutableVideoComposition *mainCompositionInst = [AVMutableVideoComposition videoComposition];
        mainCompositionInst.instructions = [NSArray arrayWithObject:mainInstruction];
        mainCompositionInst.frameDuration = CMTimeMake(1, 30);
        mainCompositionInst.renderSize = size;

        pi = [AVPlayerItem playerItemWithAsset:mutableComposition];
        pi.videoComposition = mainCompositionInst;

Кроме того, я знаю, что проблема в основномvideoComposition потому что если я уберуvideoCompositionтогда он играет нормально наAVPlayer.

ОБНОВЛЕНИЕ 1: Я только что узнал, что когда он зависает через 6 секунд, если я перетащить ползунок назад или вперед (т. Е. ИспользоватьseekToTime), он снова начинает нормально играть, не останавливаясь.

Кроме того, звук продолжает играть нормально, даже когда видео заморожено.

ОБНОВЛЕНИЕ 2: Если я просто продолжу и экспортирую его, используяAVAssetExportSession с тем жеAVMutableCompositionи загрузить ресурс из экспортированного видео, он работает нормально. Так что только когда я играюAVMutableComposition напрямую возникает проблема.

Ответы на вопрос(1)

Ваш ответ на вопрос