Как вызвать перерисовку фильтра в применении CIFiltersWithHandler AVVideoComposition?IOS

Программируем под IOS
Anonymous
Как вызвать перерисовку фильтра в применении CIFiltersWithHandler AVVideoComposition?

Сообщение Anonymous »

Я использую Swift для отображения контента из AVPlayer в AVPlayerLayer представления. Связанный с ним AVPlayerItem имеет videoComposition, и слегка упрощенная версия кода для его создания (без проверки ошибок и т. д.) выглядит так:

Код: Выделить всё

playerItem.videoComposition = AVVideoComposition(asset: someAsset, applyingCIFiltersWithHandler: {
[unowned self] (request: AVAsynchronousCIImageFilteringRequest) in

let paramDict = >

// filter the image
let filter = self.ciFilterWithParamDict(paramDict) {
filter.setValue(request.sourceImage, forKey: kCIInputImageKey)
if let filteredImage = filter.outputImage {
request.finishWithImage(filteredImage, context: nil)
}
})
Все это работает, как и ожидалось, когда AVPlayer воспроизводит или ищет. И если новая видеокомпозиция создана и загружена, AVPlayerLayer отображается правильно.

Однако я не нашел способа «запустить» AVPlayer/ AVPlayerItem/ AVVideoComposition для повторного рендеринга, когда я изменил некоторые значения, которые я использую для расчета параметров фильтра. Если я меняю значения, а затем играю или ищу, это отображается правильно, но только если я играю или ищу. Нет ли способа запустить рендеринг «на месте»?

Подробнее здесь: https://stackoverflow.com/questions/352 ... erswithhan

Вернуться в «IOS»