Перезагрузка AVMutableComposition - PullRequest
5 голосов
/ 25 января 2012

У меня есть AVMutableComposition, который я связал с AVPlayer.Кажется, если я добавлю дорожки к этой композиции, AVPlayer не будет воспроизводить добавленные дорожки, пока я не установлю композицию на проигрывателе снова.Сейчас я делаю это, просто заменяя текущий элемент той же композицией, которая уже установлена.После этого он выбирает новые треки.

Я не смог выяснить, является ли это правильным способом, мне почему-то кажется странным, что я так поступаю.

Есть идеи?

Спасибо

1 Ответ

5 голосов
/ 29 января 2012

В основном, хотя это изменчивая композиция, Apple рекомендует создавать неизменяемую композицию и создавать AVPlayerItem для целей воспроизведения.Это немного раздражает, но вы можете обойти это.Если вы хотите обновить видео, просто сэмплируйте время, создайте другой AVPlayerItem и загрузите его в нужное время.

Вот фрагмент из документации Apple AVMutableComposition

AVMutableComposition является изменяемым подклассомAVComposition вы используете, когда хотите создать новую композицию из существующих ресурсов.Вы можете добавлять и удалять дорожки, а также добавлять, удалять и масштабировать временные диапазоны.

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

AVMutableComposition *myMutableComposition =
    <#a mutable composition you want to inspect or play in its current state#>;

AVComposition *immutableSnapshotOfMyComposition = [myMutableComposition copy];

// Create a player to inspect and play the composition.
AVPlayerItem *playerItemForSnapshottedComposition =
    [[AVPlayerItem alloc] initWithAsset:immutableSnapshotOfMyComposition];

Дополнительная информация: Полный документ

...