Как установить прозрачный фон для AVVideoComposition? - PullRequest
5 голосов
/ 13 июля 2011

Обновление - Я добавил награду в 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 Ответ

1 голос
/ 16 июля 2011

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

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

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

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

...