Как установить прозрачный фон для 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.