複数のオーディオ ファイルを複数のクリップにマージしようとしています。複数のビデオを正常に追加しましたが、複数のオーディオ ファイルを追加できません。次の方法を試してみたところ、「__NSArrayM insertObject:atIndex:]: object cannot be AVURLAsset を追加して試してみましたが、「[AVURLAsset アセット]: 認識されないセレクターがインスタンスに送信されました」というエラーが表示されました。このコードの最後の行でアプリがクラッシュしています。解決策を見つけるか、例を挙げてください。
- (BOOL)insertTimeRanges:(NSArray *)timeRanges ofTracks:(NSArray *)tracks atTime:(CMTime)startTime error:(NSError **)error
NSMutableArray *audioUrlArray= [[NSMutableArray alloc]init];
NSMutableArray *audioTimeRangesArray = [[NSMutableArray alloc]init];
CMTime audioTime = kCMTimeZero;
for (int i = 0; i < self.selectedSongsArray.count; i++)
{
MPMediaItem * songItem = [self.selectedSongsArray objectAtIndex:i];
NSURL *songURL = [songItem valueForProperty: MPMediaItemPropertyAssetURL];
AVURLAsset *audioUrl = [AVURLAsset URLAssetWithURL:songURL options:nil];
AVAssetTrack *track = [[audioUrl tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
AVAsset *audioAsset = [AVAsset assetWithURL:songURL];
[audioUrlArray addObject:track];
CMTimeRange timeRange = CMTimeRangeMake(audioTime, audioAsset.duration);
[audioTimeRangesArray addObject:[NSValue valueWithCMTimeRange:timeRange]];
}
AVMutableCompositionTrack *audioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[audioTrack insertTimeRanges:audioTimeRangesArray ofTracks:audioUrlArray atTime:kCMTimeZero error:nil];