Черные кадры в AVMutableComposition

Этот вопрос очень связан с AVMutableComposition - Пустой / черный кадр между активами видео , но, поскольку я не использую AVAssetExportSession, ответы не подходят для моей проблемы.

Я использую AVMutableComposition для создания композиции видео и читаю ее с помощью AVAssetReader (мне нужны данные кадра, я не могу использовать AVPlayer), но у меня часто бывают черные кадры между фрагментами видео. (в аудио нет заметных глюков).

Я создаю свою Композицию как

AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];

NSMutableArray* durationList = [NSMutableArray array];
NSMutableArray* videoList= [NSMutableArray array];
NSMutableArray* audioList= [NSMutableArray array];

for (NSInteger i = 0; i < [clips count]; i++)
{
    AVURLAsset *myasset = [clips objectAtIndex:i];
    AVAssetTrack *clipVideoTrack = [[myasset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
    [videoList addObject:clipVideoTrack];

    AVAssetTrack *clipAudioTrack = [[myasset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
    [audioList addObject:clipAudioTrack];

    CMTime clipDuration = [myasset duration];
    CMTimeRange clipRange = CMTimeRangeMake(kCMTimeZero, clipDuration);
    [durationList addObject:[NSValue valueWithCMTimeRange:clipRange]];
}

[compositionVideoTrack insertTimeRanges:durationList ofTracks:videoList atTime:kCMTimeZero error:nil];
[compositionAudioTrack insertTimeRanges:durationList ofTracks:audioList atTime:kCMTimeZero error:nil];

Я также пытался вручную вставить каждый трек в свою композицию, но у меня было то же самое.

Спасибо

7
задан Community 23 May 2017 в 10:31
поделиться