Как установить прозрачный фон для AVVideoComposition?

Обновление - я добавил награду в 50 репутаций за ответ на этот вопрос!

У меня есть приложение, которое должно собрать несколько видео и фотографий, чтобы создать из них фильм. Я использую AVMutableComposition для этого. Чтобы быть в состоянии проинструктировать, как составляются видео, я должен использовать AVMutableVideoComposition. Эта вещь имеет свойство под названием backgroundColor и документация Apple гласит:

Поддерживаются только сплошные цвета BGRA; шаблоны и другие поддерживаемые цвета игнорируются. Если визуализированный пиксельный буфер не имеет альфа-канала, альфа-значение цвета фона игнорируется.

Из этого я понимаю, что есть способ добавить альфа-канал в backgroundColor, но я просто не понимаю как. Что значит If the rendered pixel buffer does not have alpha, the alpha value of the background color is ignored. имею в виду? И как я могу добавить такую ​​вещь?

Если я просто сделаю myVideoCompositionInstruction.backgroundColor = [[UIColor colorWithWhite:1 alpha:0] CGColor]; это просто не работает - фон остается белым и не становится прозрачным.

Любая помощь будет высоко ценится, спасибо!

1 ответ

В документации Apple для AVVideoCompositionInstruction свойство, которое вы хотите установить, backgroundColor, имеет тип CGColorRef,

Моя ставка, потому что вы устанавливаете backgroundColor с UIColor и только затем получая его значение через свойство CGColor, по какой-то причине альфа-значение не передается в объект CGColorRef. Вы знаете, что значение белого передается, потому что цвет по умолчанию черный.

У UIColor есть некоторые ограничения. Я предлагаю вам прочитать следующую статью. Обратите особое внимание на раздел "Проблемы с UIColor" статьи.

Я предполагаю, что лучшим решением для вашей проблемы является определение backgroundColor непосредственно с CGColor (используйте, например, CGColorCreate) вместо UIColor.

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