Эффект перекрестного затухания без AVAssetExportSession

#ios #objective-c #xcode #cocoa-touch #avfoundation

#iOS #objective-c #xcode #cocoa-touch #avfoundation

Вопрос:

У меня есть видеопроигрыватель. В этом проекте я объединяю видео и изображения в одно видео и сопоставляю каждый объект на одной временной шкале видео. Я хочу переход с эффектом перекрестного затухания между изображением-видео или видео-видео, но дело в том, что я не хочу использовать AVAssetExportSession , потому что составленные видеоролики продолжительностью около 2-3 часов могут привести к большому количеству гигабайт, которых у пользователей может не быть на их устройствах.

Я искал некоторые образцы, как в документации Apple, но это также используется AVAssetExportSession . Есть идеи, как я могу решить проблему с эффектом перекрестного затухания в режиме реального времени без экспорта составленного видео?

Ответ №1:

Вам необходимо создать AVMutableComposition , AVMutableVideoComposition и AVMutableAudioMix , как это должно быть описано в документации для экспорта.

Из этих объектов вы можете создать AVPlayerItem :

 AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:composition];
[playerItem setVideoComposition:videoComposition];
[playerItem setAudioMix:audioMix];
  

Редактировать
Пожалуйста, обратитесь к этому образцу кода здесь: AVCompositionDebugViewer

Комментарии:

1. как это помогает в эффекте перекрестного затухания?

2. Ваша проблема в самом перекрестном затухании? Звучит так, как будто у вас возникнут проблемы с его загрузкой в проигрыватель…

3. Хорошо, вы, вероятно, захотите прояснить это в своем вопросе. Дайте мне несколько минут, я проверяю некоторые мысли в написанном коде и обновлю свой ответ

4. У меня проблема с эффектом перекрестного затухания в реальном времени. Кроме того, я не хочу использовать AVAssetExportSession.

5. Правильно, как вам грустно. И все, что вам нужно для сеанса экспорта, также можно использовать для создания AVPlayerItem, который используется для отображения / предварительного просмотра.