AVAssetTrack случайно равен нулю для AVURLAsset для действительного медиа-файла только на iPhone 7 Plus - PullRequest
0 голосов
/ 21 февраля 2019

У нас есть приложение для редактирования видео для iPhone.Приложение случайно падает, когда мы пытаемся прочитать AVAssetTrack из AVURLAsset для правильного медиа-файла, помещенного по одному и тому же URL каждый раз.Крушение началось только на iPhone 7 плюс после iOS 12.0.Он никогда не падает на любом другом телефоне.Вылетает во всех кодах, где мы получаем доступ к треку.Ниже приведен один пример такого кода

-(void)addCMSegmentDataInAVCompositionVideoTrack:(DTVideoSegmentData*)videoSegmentData withType:(int)videoType{

AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:videoSegmentData.assetURL options:nil];

CMTime singleClipDisplayTime = videoSegmentData.duration;
CMTime rangeStart = videoSegmentData.rangeStartTime;
CMTimeRange video_timeRange = CMTimeRangeMake(rangeStart,singleClipDisplayTime);

videoSegmentData.videoTimeRange = CMTimeRangeMake(videoSegmentData.startTime,singleClipDisplayTime);

if (videoType==VIDEO_ONE) {
    [self.compositionVideoOneTrack insertTimeRange:video_timeRange ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:videoSegmentData.startTime error:nil];

    videoSegmentData.compositionAudioTrack = [self createCMAVCompositionAudioTrackWithVideo1SegmentData:videoSegmentData];
}}

. Приложение определенно завершится сбоем, как 2/10 вызовов этой функции с тем же URL-адресом, сообщив об ошибке, что объект с индексом 0 не существует.Это происходит только на iPhone 7 плюс и ни на одном другом устройстве.Авария всегда на этой линии

[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
...