Как редактировать AVMutableCompositionTrack с несколькими сегментами?

У меня есть функция, которая добавляет несколько сегментов в AVMutableCompositionTrack в видеоредакторе для iPhone. Я использую следующий метод

[self.compositionVideoOneTrack insertTimeRange:video_timeRange ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:CMTimeMakeWithSeconds(videoSegmentData.startTime, VIDEO_TIME_SCALE) error:nil];

Все отлично работает Теперь мне требуется увеличивать startTime каждого из уже добавленных сегментов в композиции Track. До сих пор я не нашел никакого механизма, кроме как удалить все сегменты и переписать их на новой позиции с самого начала.

  • Я попытался получить все AVCompositionTrackSegment в композиции Track и изменить время начала цели, но он не может быть назначен.
  • я пытался [self.compositionVideoOneTrack removeTimeRange:videoSegmentData.videoTimeRange];

удалить сегмент, а затем вставить его снова в хорошем положении. Но этот вызов заставляет все сегменты рядом с удаленными сегментами двигаться влево. Вставка в хорошем положении перекрывается сегментами, которые сдвинуты влево.

Ждем решения.

1 ответ

Мы делаем подобные манипуляции. Наше решение состояло в том, чтобы создать наш собственный класс, в котором мы будем манипулировать всем до тех пор, пока мы не будем довольны, что оно находится в нужном месте, а затем непосредственно перед созданием видео мы добавим все это в AVMutableCompositionTrack, как только позиции будут "заблокированы".

Другие вопросы по тегам