2012-01-24 5 views
5

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

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

Любые идеи?

Благодаря

+0

, но разве вы не видите, что это странно ?! если вы удаляете дорожку, вам не нужно заменять элемент игрока, и этот трек перестает играть без каких-либо дальнейших замен! – AMTourky

ответ

5

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

Вот отрывок из документации 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]; 

Дополнительной информации: Full Document

+1

спасибо за ответ, это в основном то, что я делаю сейчас, но это проверяет, что это способ сделать это. –

Смежные вопросы