对于仅适用于iPhone 7 Plus的有效媒体文件,AVURLAsset的AVAssetTrack随机为零

时间:2019-02-21 06:52:42

标签: crash avfoundation ios12 avurlasset iphone7plus

我们有一个用于iPhone的视频编辑应用程序。当我们每次尝试从AVURLAsset读取AVAssetTrack来获取有效媒体文件的应用程序时,该应用程序随机崩溃,该文件位于相同的URL。该崩溃仅在iOS 12.0之后的iPhone 7和更高版本上才开始出现。它永远不会在任何其他手机上崩溃。它会在我们访问曲目的所有代码中崩溃。以下是此类代码的一个示例

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

通过给出错误,指出索引0的对象不存在,应用程序肯定会像使用相同URL的该函数的2/10调用一样崩溃。它仅发生在iPhone 7 plus和其他设备上。崩溃总是在这行上

[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 

0 个答案:

没有答案